Hello,
I'm new to bitcraze and crazyflie and have to deal the crazyflie at a project for the university.
At the end the drone should be able to fly to a given position.
For localisation I use the loco positioning system.
First I installed ROS at Ubuntu 16.04 LTS.
Then I cloned the crazyflie_ros package and the lps_ros package in the src folder of my workspace.
I also tried commands like " rosrun crazyflie_tools scan" to check wether the installation was successfully, it was.
My next step is to link the drone and the anchors of the lps in ROS and fly to a given point.
I tried diffrent examples like "dwm_loc_ekf_hover.launch" but nothing happens.
Is there a basic example in the demo files that I can use to start?
Do I need the lps_ros package, because i read that it is not neccessary?
Thanks for help!
Gettting start with Crazyflie,ROS and LPS
Re: Gettting start with Crazyflie,ROS and LPS
Hi,
No, the LPS ROS package should not be necessary anymore: it contained code to calculate the Crazyflie position from LPS measurements but this is now done in the Crazyflie itself.
The fist things to do is to setup the LPS system and get it to work using the Crazyflie client following this getting started: https://www.bitcraze.io/getting-started ... ng-system/
Once the system is setup and the Crazyflie can estimate its position, ros_crazyflie example like "position.launch" should work: https://github.com/whoenig/crazyflie_ro ... ion.launch
No, the LPS ROS package should not be necessary anymore: it contained code to calculate the Crazyflie position from LPS measurements but this is now done in the Crazyflie itself.
The fist things to do is to setup the LPS system and get it to work using the Crazyflie client following this getting started: https://www.bitcraze.io/getting-started ... ng-system/
Once the system is setup and the Crazyflie can estimate its position, ros_crazyflie example like "position.launch" should work: https://github.com/whoenig/crazyflie_ro ... ion.launch
Re: Gettting start with Crazyflie,ROS and LPS
Thank you!
After a view crashes it works!
Another question
Which example should i launch when i want to see the drone and the anchors in the ros GUI?
After a view crashes it works!
Another question
Which example should i launch when i want to see the drone and the anchors in the ros GUI?
Re: Gettting start with Crazyflie,ROS and LPS
The anchor position are available from the Crazyflie using the 'memory subsystem'. Unfortunately, as far as I know, there is no implementation of that in ROS.
The easiest would be to fetch the positions from the system as a yaml file using the Crazyflie client and then to write a ROS node to displays the anchors in RVIZ.
Getting it automatically from the Crazyflie would require quite some modification to the Crazyflie ROS driver. If you feel up to it I can point you to the firmware and python lib implementation for reference.
The easiest would be to fetch the positions from the system as a yaml file using the Crazyflie client and then to write a ROS node to displays the anchors in RVIZ.
Getting it automatically from the Crazyflie would require quite some modification to the Crazyflie ROS driver. If you feel up to it I can point you to the firmware and python lib implementation for reference.
Re: Gettting start with Crazyflie,ROS and LPS
Yes, it would be kindly great if you can point to the implementation!
Thank you very much!
Thank you very much!
Re: Gettting start with Crazyflie,ROS and LPS
The python code that decodes the LPS memory is there: https://github.com/bitcraze/crazyflie-l ... em.py#L449. This file is responsible for getting a list of all the memories in the Crazyflie and decoding them with the right decoder.
In the Crazyflie, when reading the LLP memory, this function is called: https://github.com/bitcraze/crazyflie-f ... cf2.c#L452.
Unfortunatly we do not have documented "memory mapping" for the different memories which would make them much easier to handle. On the ROS side, memories are handle to upload trajectories by Crazyswarm so there should already be some code in the Crazyflie CPP lib to access the memory subsystem.
In the Crazyflie, when reading the LLP memory, this function is called: https://github.com/bitcraze/crazyflie-f ... cf2.c#L452.
Unfortunatly we do not have documented "memory mapping" for the different memories which would make them much easier to handle. On the ROS side, memories are handle to upload trajectories by Crazyswarm so there should already be some code in the Crazyflie CPP lib to access the memory subsystem.