Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

server (cflib) implement full state command #350

Merged
merged 7 commits into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 26 additions & 6 deletions crazyflie/scripts/crazyflie_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@
from crazyflie_interfaces.srv import Takeoff, Land, GoTo, RemoveLogging, AddLogging
from crazyflie_interfaces.srv import UploadTrajectory, StartTrajectory, NotifySetpointsStop
from rcl_interfaces.msg import ParameterDescriptor, SetParametersResult, ParameterType
from crazyflie_interfaces.msg import Hover
from crazyflie_interfaces.msg import LogDataGeneric
from crazyflie_interfaces.msg import Hover, LogDataGeneric, FullState
from motion_capture_tracking_interfaces.msg import NamedPoseArray

from std_srvs.srv import Empty
Expand Down Expand Up @@ -259,10 +258,16 @@ def __init__(self):
Hover, name +
"/cmd_hover", partial(self._cmd_hover_changed, uri=uri), 10
)
qos_profile = QoSProfile(reliability=QoSReliabilityPolicy.BEST_EFFORT,
history=QoSHistoryPolicy.KEEP_LAST,
depth=1,
deadline=Duration(seconds=0, nanoseconds=1e9/100.0))

self.create_subscription(
FullState, name +
"/cmd_full_state", partial(self._cmd_full_state_changed, uri=uri), 10
)
qos_profile = QoSProfile(reliability =QoSReliabilityPolicy.BEST_EFFORT,
history=QoSHistoryPolicy.KEEP_LAST,
depth=1,
deadline = Duration(seconds=0, nanoseconds=1e9/100.0))

self.create_subscription(
NamedPoseArray, "/poses",
self._poses_changed, qos_profile
Expand Down Expand Up @@ -944,6 +949,21 @@ def _cmd_hover_changed(self, msg, uri=""):
self.get_logger().info(
f"{uri}: Received hover topic {vx} {vy} {yawrate} {z}")

def _cmd_full_state_changed(self, msg, uri=""):
"""
Topic update callback to full state cmd topic
"""
pos = [msg.pose.position.x, msg.pose.position.y, msg.pose.position.z]
vel = [msg.twist.linear.x, msg.twist.linear.y, msg.twist.linear.z]
acc = [msg.acc.x, msg.acc.y, msg.acc.z]
q = [msg.pose.orientation.x, msg.pose.orientation.y, msg.pose.orientation.z, msg.pose.orientation.w]
roll_rate = msg.twist.angular.x
pitch_rate = msg.twist.angular.y
yaw_rate = msg.twist.angular.z

self.swarm._cfs[uri].cf.commander.send_full_state_setpoint(pos, vel, acc, q, roll_rate, pitch_rate, yaw_rate)
self.get_logger().info(f"{uri}: Received full state topic {pos} {vel} {acc} {q}, {roll_rate}, {pitch_rate}, {yaw_rate}")
knmcguire marked this conversation as resolved.
Show resolved Hide resolved

def _remove_logging(self, request, response, uri="all"):
"""
Service callback to remove logging blocks of the crazyflie
Expand Down
2 changes: 1 addition & 1 deletion docs2/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Support functionality with backends
+---------------------+---------+-----------+---------+
| Manual control |
+---------------------+---------+-----------+---------+
| - cmd_full_state | Yes | No | Yes |
| - cmd_full_state | Yes | Yes | Yes |
knmcguire marked this conversation as resolved.
Show resolved Hide resolved
+---------------------+---------+-----------+---------+
| - cmd_position | Yes | No | No |
+---------------------+---------+-----------+---------+
Expand Down
Loading