Skip to content
Closed
Show file tree
Hide file tree
Changes from all 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
829 changes: 595 additions & 234 deletions crazyflie/scripts/crazyflie_server.py

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions crazyflie_examples/crazyflie_examples/data/figure8_bezier.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"control_points": [
[
[0, 0, 1, 1],
[0, 0, 0.9, 0],
[0, 0, 0, 0]
],
[
[1, 1, 0.5, 0],
[0, -0.9, -0.5, 0],
[0, 0, 0, 0]
],
[
[0, -0.5, -1, -1],
[0, 0.5, 0.9, 0],
[0, 0, 0, 0]
],
[
[-1, -1, 0, 0],
[0, -0.9, 0, 0],
[0, 0, 0, 0]
]
],
"parameters": [2.0, 2.0, 2.0, 2.0]
}
46 changes: 46 additions & 0 deletions crazyflie_examples/crazyflie_examples/figure8_bezier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env python

import numpy as np
from pathlib import Path

from crazyflie_py import *
from crazyflie_py.bezier_trajectory import BezierTrajectory


def main():

print(
"WARNING: running a script involving Bezier curves. Currently only cflib backend is supported. Please run the server with 'ros2 launch crazyflie launch.py backend:=cflib'."
)

swarm = Crazyswarm()
timeHelper = swarm.timeHelper
allcfs = swarm.allcfs

traj = BezierTrajectory.from_json(
Path(__file__).parent / "data/figure8_bezier.json"
)

TRIALS = 1
TIMESCALE = 1.0
for i in range(TRIALS):
for cf in allcfs.crazyflies:
cf.uploadBezierTrajectory(0, 0, trajectory=traj)

allcfs.takeoff(targetHeight=1.0, duration=2.0)
timeHelper.sleep(2.5)
for cf in allcfs.crazyflies:
pos = np.array(cf.initialPosition) + np.array([0, 0, 1.0])
cf.goTo(pos, 0, 4.0)
timeHelper.sleep(4.5)

allcfs.startTrajectory(0, timescale=TIMESCALE)
timeHelper.sleep(traj.total_time * TIMESCALE + 2.0)

timeHelper.sleep(4.5)
allcfs.land(targetHeight=0.0, duration=2.0)
timeHelper.sleep(3.0)


if __name__ == "__main__":
main()
3 changes: 2 additions & 1 deletion crazyflie_examples/setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ console_scripts =
hello_world = crazyflie_examples.hello_world:main
nice_hover = crazyflie_examples.nice_hover:main
figure8 = crazyflie_examples.figure8:main
figure8_bezier = crazyflie_examples.figure8_bezier:main
multi_trajectory = crazyflie_examples.multi_trajectory:main
cmd_full_state = crazyflie_examples.cmd_full_state:main
set_param = crazyflie_examples.set_param:main
hello_world4 = crazyflie_examples.hello_world4:main
drone_drag = crazyflie_examples.drones_drag.drones_in_drag.Strut.run:main
drone_drag = crazyflie_examples.drones_drag.drones_in_drag.Strut.run:main
2 changes: 2 additions & 0 deletions crazyflie_interfaces/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ rosidl_generate_interfaces(${PROJECT_NAME}
"msg/LogBlock.msg"
"msg/Position.msg"
"msg/TrajectoryPolynomialPiece.msg"
"msg/TrajectoryBezierPiece.msg"
"msg/VelocityWorld.msg"
"srv/GoTo.srv"
"srv/Land.srv"
Expand All @@ -34,6 +35,7 @@ rosidl_generate_interfaces(${PROJECT_NAME}
"srv/Takeoff.srv"
"srv/UpdateParams.srv"
"srv/UploadTrajectory.srv"
"srv/UploadBezierTrajectory.srv"
"srv/RemoveLogging.srv"
"srv/AddLogging.srv"
DEPENDENCIES builtin_interfaces geometry_msgs std_msgs
Expand Down
5 changes: 5 additions & 0 deletions crazyflie_interfaces/msg/TrajectoryBezierPiece.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
float32[] bezier_control_pts_x
float32[] bezier_control_pts_y
float32[] bezier_control_pts_z
float32[] bezier_control_pts_yaw
builtin_interfaces/Duration duration
4 changes: 4 additions & 0 deletions crazyflie_interfaces/srv/UploadBezierTrajectory.srv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
uint8 trajectory_id
uint32 piece_offset
TrajectoryBezierPiece[] pieces
---
Loading