whoenig / crazyflie_ros Goto Github PK
View Code? Open in Web Editor NEWROS Driver for Bitcraze Crazyflie
License: MIT License
ROS Driver for Bitcraze Crazyflie
License: MIT License
Hello,
I am just starting with the CF quadrotor and I had some questions. Is it possible with this implementation to maintain a given altitude and control linear velocities in x and y independently? Or do i have to send commands in thrust as well if I'm publishing on the cmd_vel topic?
It is not a bug as such, but the process dies because in the Automatic state in iteration the m_goal has not changed and is all 0. This throws an exception in the "m_listener.transformPose(m_frame, targetWorld, targetDrone);" because the scalar of the quaternion cannot be 0.
Of course the point is to have set a goal when the user calls the takeoff service, but when testing the software with many other launchers, services and real world devices, sometimes I forget to publish in /goal before.
It would be nice if the takeoff service checked m_goal and if 0 would not set m_state to TakingOff and throw a Warning or an Error, urging the user to set the goal before.
Hello,
I have been trying to launch 5-9 crazyflies but every time I try to do so, it crashes with this error
[INFO] [WallTime: 1457722863.580024] waiting for land service
[INFO] [WallTime: 1457722863.581063] found land service
[INFO] [WallTime: 1457722863.581311] waiting for takeoff service
[INFO] [WallTime: 1457722863.581536] found land service
[INFO] [WallTime: 1457722863.581775] waiting for takeoff service
[INFO] [WallTime: 1457722863.582818] found takeoff service
[INFO] [WallTime: 1457722863.583233] found takeoff service
[crazyflie_server-2] process has died [pid 434, exit code -6, cmd /home/swapnil/catkin_ws/devel/lib/crazyflie_driver/crazyflie_server __name:=crazyflie_server __log:=/home/swapnil/.ros/log/978b61a0-e7bb-11e5-90fc-60a44c53d68d/crazyflie_server-2.log].
log file: /home/swapnil/.ros/log/978b61a0-e7bb-11e5-90fc-60a44c53d68d/crazyflie_server-2*.log
[crazyflie1/crazyflie_add-4] process has finished cleanly
log file: /home/swapnil/.ros/log/978b61a0-e7bb-11e5-90fc-60a44c53d68d/crazyflie1-crazyflie_add-4*.log
[crazyflie3/crazyflie_add-14] process has finished cleanly
log file: /home/swapnil/.ros/log/978b61a0-e7bb-11e5-90fc-60a44c53d68d/crazyflie3-crazyflie_add-14*.log
[INFO] [WallTime: 1457722863.797127] found land service
[INFO] [WallTime: 1457722863.797527] waiting for takeoff service
[INFO] [WallTime: 1457722863.799560] found takeoff service
[crazyflie2/crazyflie_add-9] process has finished cleanly
i Have no issues with 4 crazyflies but once i go with 5, it doesn’t work. or it doesn’t connect to more than 1 or 2.
i am using 2 usb hubs and the hubs work fine with 4 radios. Im using a single radio for each crazyflie.
any idea what could be wrong?.
Thanks
Hi,
I am trying to change the vicon mocap to the qualisys mocap and run the hover demo. I am using the Qualisys ROS driver provided by https://github.com/KumarRobotics/motion_capture_system. I get the following errors when running the demo code inside RViz
which is because I am not having a world frame output. When performing rosrun tf tf_monitor the output I get is (one of the continuous prints)
Frames:
Frame: /crazyflie/base_link published by unknown_publisher Average Delay: -0.0997525 Max Delay: 0
Frame: crazyflie published by unknown_publisher Average Delay: 0.00022675 Max Delay: 0.00036054
The output of "rosrun tf view_frames" gives me two "states", one with "mocap" and the other with "crazyflie" as follows:
frames.pdf
I have very new to both the mocap and ROS and I am not able to understand what is meant by the world frame and how I get to output that. I read the issue #17 but I could not make sense of this part.
Also, what would the input to "frame" be in my case when running "roslaunch crazyflie_demo hover_qualisys.launch uri:=radio://0/80/2M frame:=crazyflie x:=0 y:=0 z:=1"
Running ROS Jade on Ubuntu 14.04
Thanks for the help again!
Any chance you could share your .stl file for the frame you used in
https://www.bitcraze.io/2015/05/autonomous-flight-using-kinect2-for-position-control/
:D
I was trying to avoid using a print-out frame but I've come to the conclusion it is necessary. I have access to some 3d printers but if possible I'd rather not go through the trouble of making a (most likely inferior) model if I don't need to!
No worries if you don't want to share it however.
IMU and RSSI are working fine, but I can't seem to get battery data through the package. I tried connecting via cfclient, and it showed me the battery level, but when I runrostopic echo /crazyflie/battery
, there is no data returned. I haven't changed any of the default logging parameters, which are appearing as 'true'. Any idea why this might be happening?
Due to the small size of Crazyflie, which kind of constellations for each Crazyflie with Vicon system are recommended ?
Hi,
I have attempted to compile the ros file using the Jade distribution.
using clean make and catkin_make commands I still receive the same error.
I have looked at the cmakefillist on line 8 it has: find_library(USB_LIB usb-1.0)
I have also cloned the package and still receiving the same error.
Where can I locate the usb-1.0 library or ammend the cmakelist?
Error Returned:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
USB_LIB
linked by target "crazyflie_server" in directory /home/bitcraze/catkin_ws/src/crazyflie_ros/crazyflie_driver
-- Configuring incomplete, errors occurred!
See also "/home/bitcraze/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/bitcraze/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:456: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
Hi everyone,
After I have configured the crazyflie_ros and optitrack motion capture system, I have come up with a new problem, which is how to configure joystick. I do know that I need to install the hector_quadrotor package. But the thing is that I really don't know how to install this package on ROS Kinetic on ubuntu 16.04.
My solution to install this package is git clone <url> -b kinetic-devel
, then I use wstool
to install all the dependencies which is described in the hector_quadrotor.rosinstall file. After all these, I went to the workspace to catkin_make
, but after I have done all these, it still does not work. Does anyone have installed this package on kinetic? All help would be very appreciated.
Hi Wolfgang,
I noticed from the beginning that if I launched the application with multiple CFs, and one of the CFs would be turned off, then the complete ROS application hangs for all CFs. Today I was trying to investigate how to avoid this, since it could be the case that I would be starting the application and one of the CFs had ran out of battery and died, or if I would just like to remove one CF from the experiment, but not remove it from the launch. I would like all the others to still run their applications in case that would happen. Do you think that it would be possible to avoid this in a nice way?
I dig a bit into the code and saw that things get stuck at crazyflie.cpp, line 81 to 85, after the constructor is initiated at the crazyflie_server. I could not think of a good way yet to do this and thought of asking you first before starting to modify the code.
Thanks for the help again!
How do I use multiple crazy radios for multiple sets of quads?
Hi Wolfgang,
Thanks for your contribution for this package. I have achieved hover and multi-point track using your ros package. While I want to go further, I think I need to understand about the onboard controller. However, I found really little information about the onboard controller. Here, I want to get information about the imu, I do find the rostopic IMU, but when I echo this topic, there is nothing printed. So how can I get these information? Moreover, how can I control the onboard controller. I really did not find much about that.
Thanks a lot.
Bin
I'm trying to roslaunch the demo files but I'm getting
[ERROR] [1443209803.433117116]: Exception thrown while processing service call: Could not find Crazyradio with given devId!
[ERROR] [1443209803.433242638]: Service call failed: service [/add_crazyflie] responded with an error: Could not find Crazyradio with given devId!
Can you help to solve the error.
Hi!
first, I want to thank you for this project, because it is the fundament of the experimental part of my master thesis! Be sure that I will cite you in my report :)
I hope you could help me with the following issue with your PID. I won't go deep in what my application actually is, but basically, I'm running the controller at 60Hz and I'm publishing way points at 20hz with distance variable from the Crazyflies, but always on the same plane(mostly, on a circular path). I'm using your standard setting for the PID parameters, I only increased the boundaries of the control output from [-10,10] to [-30,30] (degrees?). The problem is in the shape of the control output that I get, that is shown in the figure attached: the blue and the red are respectively the X and Y PID outputs. The Zone 1 is a time that goes from the take-off to the reach of an initial static hovering point. Zone 2 consists of the time in which the Crazyflie is hovering, then in Zone 3, I start publishing a moving goal.
Questions: do you have any clue of why do I get so much high-frequency chattering? Moreover, even if I was reaching saturations and I had to increase the max amplitudes (and in spite of this I still get some saturation), (i know that the saturation could normally mean that gains are too high or the goal is too fast), the crazyflie doesn't seem to behave "aggressively", because it is naturally filtering a command signal like this. Do you have any idea of what could be the cause of this? How "normal" is an output like this from your PID?
Thanks in advance!
Hi Wolfgang,
I was trying now the demo multi_waypoint_vicon and for some reason, when I press take-off, both CFs start and try to take off, but when they are like 5cm from the ground, they both shut down the motors again. Have you ever experienced this issue? No error message is outputted from the application.
I am setting one CF with radio://0/80/2M and the other with radio://0/100/2M/E7E7E7E7E8 and I can see that both are being captured by the mocap system and the data is being correctly received. I also checked and the controller code is moving from take off to automatic..
The pose is being correctly computed (asking them to go to 0 0 1 and 0 0.5 1 in the start) and the output of
msg.linear.x = m_pidX.update(0, targetDrone.pose.position.x);
msg.linear.y = m_pidY.update(0.0, targetDrone.pose.position.y);
msg.linear.z = m_pidZ.update(0.0, targetDrone.pose.position.z);
is always being zero for all of them, even though the targetDrone.pose.position.x, y, z is always non zero and the transformed goal positions.
I am using the original controller code and it is working when I run teleop_vicon for each of the CFs.
Thanks for the help!
Hi,
Thank you very much for your package it has been really helpful.
I have four Crazfyflies 2.0 and two crazyradio dongles.
What I have done until now:
roslaunch crazyflie_demo teleop_xbox360.launch uri:=radio://0/120/2M
roslaunch crazyflie_demo multi_teleop_xbox360.launch uri1:=radio://0/120/2M/0xE7E7E7E700 uri2:=radio//0/120/2M/0xE7E7E7E701
The problem is that nothing happens, all the windows open (rviz, rqtplot) but no data is being received and no data is being sent, also there are no errors.
Then I tried to connect with the official client with the first pair of crazyflies turned on. Independent of the address value that I set on the client, both crazyflies react to the joystick and also I see a degradation of performance on the received values. My guess is that the firmware somehow is not implementing the addressing and since both crazyflies are using the same channel and datarate then both receive the joystick commands without addressing filtering. I also tried your old client with same results.
Can you please point me in the right direction?. Is there any special firmware which I have to install on the crazyflies?
Best regards,
Raul
Hi. We are trying to use the ros nodes to set up the server and connect to a crazyflie, however we can't get a connection.
We are running:
roslaunch crazyflie crazyflie_server.launch
roslaunch crazyflie crazyflie_add.launch uri:=radio://0/10/250K
But the callback to connected, is not called and ROS never prints "connected" to the screen.
So we are not able to get any /imu msgs from the crazyflie.
We are however able to publish cmd_vel msgs and make the rotors turn.
Can you help us with this? We spent many hours looking at the ros code and the crazyflie python apis, but couldn't really figure it out.
Thank you in advance.
Hi,
I'm trying to install the package in a Jade distribution.
I cloned the repository to ~/catkin_ws/src and called catkin_make. Midway through the process I get the error "Invoking "make -j1 -l1" failed".
/home/rshum/catkin_ws/src/crazyflie_ros/crazyflie_driver/src/crazyflie_server.cpp: In member function ‘void CrazyflieROS::run()’:
/home/rshum/catkin_ws/src/crazyflie_ros/crazyflie_driver/src/crazyflie_server.cpp:244:7: error: ‘sleep_for’ is not a member of ‘std::this_thread’
make[2]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_server.dir/src/crazyflie_server.cpp.o] Error 1
make[1]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_server.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j1 -l1" failed
Any inside on why I'm getting this error?
thanks
Multi Hover with 3 quads - I am able to connect to two, but the system cannot connect to the third one. I've check if its an issue witht the quad so instead I switched the sequence of which quad connects first. It always lets the first two connect.
I have flashed all 3 CF1.0 to the same address: //0/10/2M/'address' - I don't think I can bootload configure the 'address' value for CF1.0
Q1. How would I go about running one ROS environment for 2 x Crazyradio dongles? i.e 6 CF 1.0 on 2 dongles
This is my launch file for multi hover: https://www.dropbox.com/s/3ma6s5hqvfkkdx4/multi_hover_vrpn_3.launch?dl=0
Way point Navigation
@whoenig I have modified the demo.py script to fit for stampedtransform
Edited demo.py: https://www.dropbox.com/s/4uij5n9z9k2nyp9/demo.py?dl=0
Edited demo1.py: https://www.dropbox.com/s/ze3zfytb30vfn6v/demo1.py?dl=0
Edited: hover_vrpn_waypoint.launch: https://www.dropbox.com/s/2tpb8hy99vptu4q/hover_vrpn_waypoint.launch?dl=0
let me know what you think? I will try these scripts tomorrow.
Hi Whoening,
I'm trying to understand your code a little better and I have a doubt in your PID controller I was hoping you could clear it out for me. In lines 192-195 in controller.cpp (https://github.com/whoenig/crazyflie_ros/blob/master/crazyflie_controller/src/controller.cpp#L192-195)
msg.linear.x = m_pidX.update(0, targetDrone.pose.position.x);
msg.linear.y = m_pidY.update(0.0, targetDrone.pose.position.y);
msg.linear.z = m_pidZ.update(0.0, targetDrone.pose.position.z);
msg.angular.z = m_pidYaw.update(0.0, yaw);
why do you send a 0 instead of the current drone position from the mocap to the PID controller input argument value?
Thanks
The parent frame is currently hard-coded to "world". It should be a user-defined parameter instad.
Hello,
Whenever i try to launch the multi_waypoint_vicon demo, i keep having this issue
Log: 42
[ INFO] [1449255005.156678767]: Ready...
[ INFO] [1449255009.122393262]: Takeoff requested!
terminate called after throwing an instance of 'tf2::InvalidArgumentException'
what(): Quaternion malformed, magnitude: 0 should be 1.0
[crazyflie1/controller-6] process has died [pid 26478, exit code -6, cmd /home/maverick/indigo_ws/devel/lib/crazyflie_controller/crazyflie_controller __name:=controller __log:=/home/maverick/.ros/log/d329d03a-9ab7-11e5-b21a-0025647bb69f/crazyflie1-controller-6.log].
log file: /home/maverick/.ros/log/d329d03a-9ab7-11e5-b21a-0025647bb69f/crazyflie1-controller-6*.log
i changed the launch file to make it run for just one crazyflie. Any help
Thanks
Hi, Wolfgang
I am trying to test the basic function of the crazyflie 2.0 while I do not have a joystick right now. I use the command roslaunch crazyflie_demo teleop_xbox360.launch uri:=radio://0/100/2M
to test. Others all function well while the rviz shows that there is error with global status. I guess it's not triggered by not installing joy package and not connecting to a xbox360 gamepad. I don't know what is wrong here. Could you help me about it? Thanks in advance.
Bin
Continuining on from this reply:
"Your VRPN server should publish to "/crazyflie". "/crazyflie/base_link" is only required for visualization in RVIZ, and you can easily add a static transformation (see https://github.com/whoenig/crazyflie_ro ... launch#L40).
You said you can take-off: Does that mean autonomously? That indicates that your optitrack works fine (otherwise it would just not take off). Are you using CF 1.0 or 2.0? Which firmware are you running?"
I have attached my frame configuration and graph of the ros environment.
For the UWB LPS I need to set parameters in the Crazyflie at connection time. It is for setting the anchor positions. However parameters cannot be set before the Crazyflie is actually connected so I would need to know when the connection is actually done (ie. when "Ready ..." is printed in the log).
I can implement that myself but I am not really sure how to do it in the most "ROS way".
Hi @whoenig ,
Recently I want to hover two CFs with one CrazyRadio Dongle, while there is no error and the progress seems fine, like I can see two CFs in the visualization window. But I can clearly see that the CFs are not really connected since the light on CrazyRadio Dongle is still red which is different from normal case. So it is obvious that there is no response to the takeoff command. Do you have any idea about why it would cause that? Do I need to flash new firmware, cause I see other issues then I flashed Crazyflie2-nrf-firmware to my CFs, still cannot connect.
By the way, it works fine separately. Thanks in advance.
Hi,
I was trying to look at the demo "multi_waypoing_vicon" to try to understand how you could make the crazyflie track points in a sequential manner, but I could not understand how this is actually performed.
In my application, I would like to have the waypoints being defined by another application (say go to point A, then change to point B) and was wondering how to modify your code to allow this. In the hover application, the point is fixed and set inside the pose node, which runs publish_pose.py, where it is running continuously at the rate speed right?
Where would you suggest to be the best place to add a code that reads from a socket (to get new position waypoints) and sends those values to the controller? Also, if I wanted to use a specific yaw angle, how could this be done, since from what I understood in the current hover example that is not performed?
Since I do not have much experience with python, I would prefer to do it in c++, but I would go for python if that would be easier.
Thanks a lot for the help again and sorry if I have missed something in your examples that provide answers to my questions!
Hi,
I am trying to run the demo example "roslaunch crazyflie_demo teleop_xbox360.launch" and I get the data correctly from the crazyflie (battery, temperature, IMU) but for some reason I cannot send commands to the crazyflie using my logitech gamepad. I tried the cfclient and it works to receive data and control the crazyflie with the gamepad, but for some reason it is not working with your demo example. I tried also to use the logitech_gamepad.launch from the hector project (had to modify it as you did for the xbox360.launch, but also did not work). Any good way to debug this?
I am running ROS Jade, Ubuntu 14.04, Crazyflie 2.0.
Thanks for the help, great work and thank you for sharing!
Hello,
I recently reformatted my system and got back to work but i cannot seem to get the crazyflies to connect. It was working befor but now its giving me this error
process[crazyflie/controller-6]: started with pid [32333]
[ INFO] [1455740151.123687176]: Adding radio://0/80/2M as crazyflie with trim(0.000000, 0.000000). Logging: 1, Parameters: 0
LIBUSB_ERROR_ACCESS
[ERROR] [1455740151.131435717]: Exception thrown while processing service call: Could not find Crazyradio with given devId!
[ERROR] [1455740151.131795260]: Service call failed: service [/add_crazyflie] responded with an error: Could not find Crazyradio with given devId!
process[crazyflie/pose-7]: started with pid [32353]
/vicon/crazyflie/crazyflie
I tried it on several systems and got the same results. I do not have the crazyflie client installed but i dont think i need that to use this package.
Im connected to the vicon system and getting data and everything is as it should be.
Any help ?
Thanks.
Hello,
I have installed all the drivers necessary but get this issue when i run the roslaunch command.
and idea why?
Thanks
Hi Wolfgang,
So I spent some time now investigating the problem I told you before that when I start the CFs via roslaunch, not all selected CFs start and the red led just keeps flashing. I am now trying with 12 CFs and 6 radios.
I went through some debugging and it appears that whenever one CF does not work, it gets suck inside the crazyflie_server in the step when you call "logBlockImu.reset(new LogBlock" or "logBlock2.reset(new LogBlock". I placed couts before and after that point and whenever one does not work, it does not go through one of those functions. I noticed that the ones that dont work go through the line ROS_INFO("Requesting Logging variables...") but never get to print ROS_INFO("Ready...") so I started from there.
Do you have any idea why this would be happening?
Thanks a lot for the help!
Hello Whenever i try to run the launch file i get the following error. Any advice ???
Thank you.
maverick@maverick:~/indigo_ws$ roslaunch crazyflie_demo teleop_xbox360.launch
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
... logging to /home/maverick/.ros/log/a31abbc2-20df-11e5-977f-d0df9a8cc6bf/roslaunch-maverick-17184.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
started roslaunch server http://localhost:52025/
PARAMETERS
NODES
/crazyflie1/
crazyflie_add (crazyflie/crazyflie_add.py)
crazyflie_demo_controller (crazyflie_demo/controller.py)
joy (joy/joy_node)
quadrotor_teleop (hector_quadrotor_teleop/quadrotor_teleop)
/
crazyflie_server (crazyflie/crazyflie_server.py)
rqt_plot (rqt_plot/rqt_plot)
rqt_plot2 (rqt_plot/rqt_plot)
rviz (rviz/rviz)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[crazyflie_server-1]: started with pid [17202]
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[crazyflie1/crazyflie_add-2]: started with pid [17203]
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[crazyflie1/joy-3]: started with pid [17208]
[ INFO] [1435859830.461233524]: Opened joystick: /dev/input/js0. deadzone_: 0.050000.
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
Traceback (most recent call last):
Traceback (most recent call last):
File "/home/maverick/indigo_ws/src/crazyflie_ros/crazyflie/scripts/crazyflie_server.py", line 289, in
from cfclient.utils.logconfigreader import LogConfig
ImportError: No module named cfclient.utils.logconfigreader
process[crazyflie1/quadrotor_teleop-4]: started with pid [17236]
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[crazyflie1/crazyflie_demo_controller-5]: started with pid [17266]
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
[INFO] [WallTime: 1435859830.619038] wait_for_service /add_crazyflie
process[rviz-6]: started with pid [17279]
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[rqt_plot-7]: started with pid [17282]
[crazyflie_server-1] process has died [pid 17202, exit code 1, cmd /home/maverick/indigo_ws/src/crazyflie_ros/crazyflie/scripts/crazyflie_server.py __name:=crazyflie_server __log:=/home/maverick/.ros/log/a31abbc2-20df-11e5-977f-d0df9a8cc6bf/crazyflie_server-1.log].
log file: /home/maverick/.ros/log/a31abbc2-20df-11e5-977f-d0df9a8cc6bf/crazyflie_server-1*.log
WARNING: Package "cfclient" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
process[rqt_plot2-8]: started with pid [17304]
When
rosrun crazyflie_controller controller.cpp
I get
line 9: syntax error near unexpected token `('
line 9: `double get('
Hi,
just compiled this project under ROS indigo and got following report
/home/joker/crazyflie_ros/src/crazyflie_ros/crazyflie_driver/src/crazyflie_add.cpp:2:36: fatal error: crazyflie/AddCrazyflie.h: No such file or directory
#include "crazyflie/AddCrazyflie.h"
^
compilation terminated.
/home/joker/crazyflie_ros/src/crazyflie_ros/crazyflie_driver/src/crazyflie_server.cpp:2:36: fatal error: crazyflie/AddCrazyflie.h: No such file or directory
#include "crazyflie/AddCrazyflie.h"
^
compilation terminated.
make[2]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_add.dir/src/crazyflie_add.cpp.o] Error 1
make[1]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_add.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_server.dir/src/crazyflie_server.cpp.o] Error 1
make[1]: *** [crazyflie_ros/crazyflie_driver/CMakeFiles/crazyflie_server.dir/all] Error 2
make: *** [all] Error 2
It seems crazyflie/AddCrazyflie.h
is missing and I could not get this file in this project and Github. Any help about this issue ?
Hey Whoenig, thank you for the work you have put into this system.
Currently I am getting libusb_timeout errors when I attempt to run multiple crazyflies off the one crazyradio. Physically this results in the radio having a solid red led.
Additionally, when running crazyflies off different radios I have been getting some strange behaviour.
I was hoping you had an idea for either of these issues and could also provide what versions of firmware for the radios and crazyflies that you use.
Thank you very much
Ryan
When using the Vicon system, what is the best way to position the markers? I'm having a hard time getting the minimum 3 markers on the crazyflie such that I can create a subject and observe it using the vicon bridge.
Is there a way to track just a single marker (and thus unlabeled?) I'm relatively new to the Vicon system.
Hi!
I was wondering what the different "pieces" of the radio URIs should be set for multiple copter flight:
radio://<radio_num>/<channel>/<address>
For the sake of simplicity, let's say that we are flying two CFs with a single CR.
If I understand correctly, then I can leave the <radio_num>
to zero for both CFs.
Then I have to pick a <channel>
and an <address>
for each CF.
But then:
Assuming that the two different CF should have two different URIs, is it ok to just set different <channel>
s, or should I (also) set different <address>
es?
How do I pick a <channel>
? Are there any constraints?
(For example: "it has to be a positive integer less than 100".)
And how do I pick an <address>
? Is there a format constraint?
Is there a place in the Bitcraze wiki or tutorials that I am missing where I can read this things up?
Thanks in advance!
How do I test if the connection between the running services and Crazyflie (2.0) was successfull?
Steps I did:
1.) roslaunch crazyflie_server.launch
2.) roslaunch crazyflie_add.launch
I also cannot find the
"crazyflie_driver/AddCrazyflie.h" and "crazyflie_driver/UpdateParams.h"
which are included i.e. in the crazyflie_server.cpp.
-ROS: Jade
-Ubuntu: 14.04
Thanks for the support.
Hi
first of all great work, thank you for sharing!
I'm trying to get hovering working with an Optitrack Mocap system instead of a Vicon system. However, I'm new to ROS so I'm having some trouble.
I'm trying to run the hovering example you have.
I modified hover_vicon.launch file as follow
include file="$(find vicon_bridge)/launch/vicon.launch"
for
include file="$(find mocap_optitrack)/launch/mocap.launch"
to launch the optitrack system instead of the vicon system. I'm using the "Mocap_Optitrack" package to retrieve the CF position. (http://wiki.ros.org/mocap_optitrack). This seems to work fine.
I think the issue is providing the correct node to hover_vicon.launch. The optitrack package can publish poses of configured rigid bodies as tf transforms, poses, and/or 2D poses.
However, I don't know if this are compatible with your controller code or that needs to be modified too. Can you give me some pointers?
In the RViz window under display I'm getting a status: Error under RobotModel:
no transform from [crazyflie/base_link] to [world]
Thnak you
Hi,
Excellent contribution.
I am new to Vicon, so the following might be quite trivial to solve.
The Crazyflie_tools and the teleop_xbox360 demo are working. However, I am struggling with the hover_vicon demo. To be specific, when I do:
roslaunch crazyflie_demo hover_vicon.launch uri:=radio://0/80/250k frame:=/vicon/crazyflie/crazyflie x:=0 y:=0 z:=1
There are no errors in the console log, but the RViz GUI shows two errors:
Any pointers on what might be wrong?
Thank you for your help in advance.
Hi Whoening,
I am starting to work on crazyflie 2.0 for swarm robotics, and run into your ROS driver. It is pretty well organized. Thanks for your great work. I have a question about your waypoint tracking controller in "crazyflie_controller/src/controller.cpp" line 195-200.
geometry_msgs::Twist msg; msg.linear.x = m_pidX.update(0, targetDrone.pose.position.x); msg.linear.y = m_pidY.update(0.0, targetDrone.pose.position.y); msg.linear.z = m_pidZ.update(0.0, targetDrone.pose.position.z); msg.angular.z = m_pidYaw.update(0.0, yaw); m_pubNav.publish(msg);
The PID controller computes outputs using the current value and target value. However, why you use [0, 0, 0, 0] for the current value? Shouldn't you use the values updated from the tracking system?
position, quaternion = self.listener.lookupTransform(self.worldFrame, self.frame, t); rpy = tf.transformations.euler_from_quaternion(quaternion); msg.linear.x = m_pidX.update(position[0], targetDrone.pose.position.x); msg.linear.y = m_pidY.update(position[1], targetDrone.pose.position.y); msg.linear.z = m_pidZ.update(position[2], targetDrone.pose.position.z); msg.angular.z = m_pidYaw.update(rpy[2], yaw);
Thanks,
Li
Hello im having a trouble at using ps3 controller on crazyflie ros
i installed cflib and python client and checked it running successfully
and i installed crazyfile ros and tried rosrun crazyfile_tools scan and found the address of my crazyfile
but when i try
kyujin@kyujin-Samsung-Desktop-System:~/catkin_ws$ roslaunch crazyflie_demo teleop_ps3.launch uri:=radio://0/80/250K
then i get a error like this
ERROR: cannot launch node of type [crazyflie_demo/controller.py]: can't locate node [controller.py] in package [crazyflie_demo](viz and sensor reading are normal only controls are malfuntioning)
i checked a launch file controller.launch and found default arg for crazyfileSDK was set to
but i found that i don't have such path crazyflie-clients-python/lib
list of contents in my crazyflie-clients-python is
(venv) kyujin@kyujin-Samsung-Desktop-System:~/crazyflie-clients-python$ ls -l
total 104
-rw-rw-r-- 1 kyujin kyujin 587 9월 25 02:33 appveyor.yml
drwxrwxr-x 2 kyujin kyujin 4096 9월 25 02:33 bin
-rw-rw-r-- 1 kyujin kyujin 15468 9월 25 02:33 bitcraze.ico
-rw-rw-r-- 1 kyujin kyujin 225 9월 25 02:33 CMakeLists.txt
-rw-rw-r-- 1 kyujin kyujin 2236 9월 25 02:33 CONTRIBUTING.md
-rw-rw-r-- 1 kyujin kyujin 725 9월 25 02:33 CREDITS.txt
drwxrwxr-x 2 kyujin kyujin 4096 9월 25 02:33 examples
-rw-rw-r-- 1 kyujin kyujin 18415 9월 25 02:33 LICENSE.txt
-rw-rw-r-- 1 kyujin kyujin 180 9월 25 02:33 MANIFEST.in
-rw-rw-r-- 1 kyujin kyujin 56 9월 25 02:33 module.json
-rw-rw-r-- 1 kyujin kyujin 1071 9월 25 02:33 package.xml
-rw-rw-r-- 1 kyujin kyujin 7529 9월 25 02:33 README.md
-rw-rw-r-- 1 kyujin kyujin 1901 9월 25 02:33 RELEASE_CHECKLIST.md
-rw-rw-r-- 1 kyujin kyujin 5484 9월 25 02:33 setup.py
drwxrwxr-x 7 kyujin kyujin 4096 9월 25 02:34 src
drwxrwxr-x 3 kyujin kyujin 4096 9월 25 02:33 tools
drwxrwxr-x 2 kyujin kyujin 4096 9월 25 02:33 win32install
please help me solve this prob..
thanks for your wonderful work and thanks in advance
I want to log additional information, like motor inputs, from Crazyflie. It seems that this package provides a way to add custom logBlock (see crazyflie_driver/crazyflie_server.cpp at line 309
), but there is no details on that. Therefore, I wonder how can I use that?
Thank you
Hi Wolfgang,
When you started flying with the 3D printed frame, did you have to make some adjustments to the crazyflie (roll and pitch trimming, internal PID controller) or the position controller in ROS?
I was just testing some configurations on a 3D printed frame I found online http://www.thingiverse.com/thing:1151252 and I noticed that the crazyflie became much more sensitive, and several of the crazyflies I tested just started oscillating when holding a position and some became unstable. I then tested a specific configuration in two different crazyflies and noticed that in one there were almost no oscillations and in the other there were a lot, which makes me think that I really need to adjust the propellers very well, or that there may be some differences with respect to the IMU, so that one of them would need roll/pitch trimmings and the other didn't. One thing I noticed is that even if the markers are very lightweight, their configuration must be symmetric, otherwise the crazyflie tilts a lot and becomes unbalanced.
Did these issues also happened to you when using a frame? It would be great to know if you have any tips regarding this. One thing I have different from your configuration is that my battery is placed on the bottom since I am using the wireless charger.
Thanks a lot for the help again!
Best,
José
Do you have any tips for connecting to multiple crazyradios through the ROS architecture? I would really appreciate it!
Hi,
I wrote a simple code to publish pitch, roll and thrust to the cmd_vel topic which the crazyflie subscribes to. But when i run the code the propellers will turn on for a second then the crazyflie just shuts down. Have you ever encounter this problem before?
Hi!
I have connected the crazyflie 2.0 using crazyradio. I get all the data from IMU, magnetometer etc. But when I publish the values on /cmd_vel, crazyflie doesn't respond. I checked the topic using rostopic echo and it is getting the values. I have tried changing the radio, crazyflie, computer but the problem persists.
Could you please help me with this?
Thanks!
Bhargav Jha
I found out that the problem was due to changed firmware. Which version of firmware should I use with the crazyflie ros package?
I am having troubles connecting to multiple quadrotors using your ROS node. I have been following your comments on the bitcraze blog:
https://www.bitcraze.io/2015/04/towards-crazyswarms-2/
I have downloaded your radio_multi-link python client and my radio and crazyflies have the most up-to-date firmware. I am currently running on ROS hyrdo, but will shortly be upgrading to Indigo, on Ubuntu 12.04.
When I run the mutli_teleop_xbox360 node I get the following errors over and over:
[INFO] [WallTime: 1430944581.092314] Connecting to radio://0/80/2M
[INFO] [WallTime: 1430944581.092744] Connecting to radio://0/72/2M
[FATAL] [WallTime: 1430944581.093472] Connection to radio://0/72/2M failed: Couldn't load link driver: Link already open!
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/cflib/crazyflie/init.py", line 217, in open_link
self._link_error_cb)
File "/usr/local/lib/python2.7/dist-packages/cflib/crtp/init.py", line 90, in get_link_driver
instance.connect(uri, link_quality_callback, link_error_callback)
File "/usr/local/lib/python2.7/dist-packages/cflib/crtp/radiodriver.py", line 110, in connect
raise Exception("Link already open!")
Exception: Link already open!
Thanks!
Investigate the use of %llx rather than %lx in the URI decoding. See https://forum.bitcraze.io/viewtopic.php?f=5&t=2194&start=10.
I noticed that in controller.cpp, the PIDreset command
void pidReset() { m_pidX.reset(); m_pidZ.reset(); m_pidZ.reset(); m_pidYaw.reset(); }
resets pidZ twice and does not reset pidY.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.