Hi Arnaud!
thanx for the quick reply.
for first crazyflie (radio://0/15/2M/AAAA00AAAA) i set crazyflie-firmware/tools/make/config.mk :
Code: Select all
## Copy this file to config.mk and modify to get you personal build configuration
## Set CRTP link to E-SKY receiver
# CFLAGS += -DUSE_ESKYLINK
## Redirect the console output to the UART
# CFLAGS += -DDEBUG_PRINT_ON_UART
## Load a deck driver that has no OW memory
# CFLAGS += -DDECK_FORCE=bcBuzzer
## Enable biq quad deck features
# CFLAGS += -DENABLE_BQ_DECK
## Use morse when flashing the LED to indicate that the Crazyflie is calibrated
# CFLAGS += -DCALIBRATED_LED_MORSE
## Turn on monitoring of queue usages
# CFLAGS += -DDEBUG_QUEUE_MONITOR
## Automatically reboot to bootloader before flashing
# CLOAD_CMDS = -w radio://0/100/2M/E7E7E7E7E7
SENSORS = task
ESTIMATOR = kalman
LPS_TDMA_ENABLE=1
CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=0 # first
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=1 # second
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=2 # third
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=3 # fourth
then compiled for the second CF (radio://0/15/2M/FFFF11FFFF) commented-out first CFLAGS and uncommented the next, like so:
Code: Select all
...
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=0 # first
CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=1 # second
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=2 # third
#CFLAGS += -DTDMA_NSLOTS_BITS=2 -DTDMA_SLOT=3 # fourth
rest of the config is the same. (Yes i did do "make clean" between compiling them)
for the third CF (radio://0/15/2M/E7E7E7E7E7) we used the third line likewise.
the launchfile for executing "roslaunch bitcraze_lps_estimator dwm_loc_ekf_multi_hover.launch"
we edited to look like this:
Code: Select all
<?xml version="1.0"?>
<launch>
<arg name="uri0" default="radio://0/15/2M/AAAA00AAAA"/>
<arg name="uri1" default="radio://0/15/2M/FFFF11FFFF"/>
<arg name="uri2" default="radio://0/15/2M/E7E7E7E7E7"/>
<arg name="frame" default="base_link" />
<arg name="joy_dev0" default="/dev/input/js0" />
<arg name="joy_dev1" default="/dev/input/js0" />
<arg name="joy_dev2" default="/dev/input/js0" />
<arg name="x0" default="3.5" />
<arg name="y0" default="2.17" />
<arg name="z0" default="1.5" />
<arg name="x1" default="3.5" />
<arg name="y1" default="3.17" />
<arg name="z1" default="1.5" />
<arg name="x2" default="3.5" />
<arg name="y2" default="4.17" />
<arg name="z2" default="1.5" />
<rosparam command="load" file="$(find bitcraze_lps_estimator)/data/anchor_pos.yaml" />
<param name="robot_description" command="$(find xacro)/xacro.py $(find crazyflie_description)/urdf/crazyflie2.urdf.xacro" />
<node name="rviz" pkg="rviz" type="rviz"
args="-d $(find bitcraze_lps_estimator)/data/rvizconfig_multi_with_goal3.rviz"/>
<group ns="crazyflie0">
<rosparam command="load" file="$(find bitcraze_lps_estimator)/data/anchor_pos.yaml" />
<node pkg="crazyflie_driver" type="crazyflie_add" name="crazyflie_add" output="screen">
<param name="uri" value="$(arg uri0)" />
<param name="tf_prefix" value="crazyflie0" />
<rosparam>
genericLogTopics: ["log_kfpos"]
genericLogTopicFrequencies: [30]
genericLogTopic_log_kfpos_Variables: ["kalman.stateX", "kalman.stateY", "kalman.stateZ"]
</rosparam>
</node>
<node name="joy" pkg="joy" type="joy_node" output="screen">
<param name="dev" value="$(arg joy_dev0)" />
</node>
<node name="joystick_controller" pkg="crazyflie_demo" type="controller.py" output="screen">
<param name="use_crazyflie_controller" value="True" />
</node>
<node name="controller_bridge" pkg="bitcraze_lps_estimator" type="crazyflie_controller_bridge.py" output="screen"/>
<node name="pose" pkg="crazyflie_demo" type="publish_pose_teleop.py" output="screen">
<param name="name" value="goal" />
<param name="rate" value="30" />
<param name="x" value="$(arg x0)" />
<param name="y" value="$(arg y0)" />
<param name="z" value="$(arg z0)" />
</node>
<node name="lps_efk_bridge" pkg="bitcraze_lps_estimator" type="lps_ekf_bridge.py" output="screen">
<param name="tf_prefix" value="crazyflie1" />
</node>
<node name="lps_viz" pkg="bitcraze_lps_estimator" type="lps_viz.py" />
</group>
<group ns="crazyflie1">
<rosparam command="load" file="$(find bitcraze_lps_estimator)/data/anchor_pos.yaml" />
<node pkg="crazyflie_driver" type="crazyflie_add" name="crazyflie_add" output="screen">
<param name="uri" value="$(arg uri1)" />
<param name="tf_prefix" value="crazyflie1" />
<rosparam>
genericLogTopics: ["log_kfpos"]
genericLogTopicFrequencies: [30]
genericLogTopic_log_kfpos_Variables: ["kalman.stateX", "kalman.stateY", "kalman.stateZ"]
</rosparam>
</node>
<node name="joy" pkg="joy" type="joy_node" output="screen">
<param name="dev" value="$(arg joy_dev1)" />
</node>
<node name="joystick_controller" pkg="crazyflie_demo" type="controller.py" output="screen">
<param name="use_crazyflie_controller" value="True" />
</node>
<node name="controller_bridge" pkg="bitcraze_lps_estimator" type="crazyflie_controller_bridge.py" output="screen"/>
<node name="pose" pkg="crazyflie_demo" type="publish_pose_teleop.py" output="screen">
<param name="name" value="goal" />
<param name="rate" value="30" />
<param name="x" value="$(arg x1)" />
<param name="y" value="$(arg y1)" />
<param name="z" value="$(arg z1)" />
</node>
<node name="lps_efk_bridge" pkg="bitcraze_lps_estimator" type="lps_ekf_bridge.py" output="screen">
<param name="tf_prefix" value="crazyflie1" />
</node>
<node name="lps_viz" pkg="bitcraze_lps_estimator" type="lps_viz.py" />
</group>
<group ns="crazyflie2">
<rosparam command="load" file="$(find bitcraze_lps_estimator)/data/anchor_pos.yaml" />
<node pkg="crazyflie_driver" type="crazyflie_add" name="crazyflie_add" output="screen">
<param name="uri" value="$(arg uri2)" />
<param name="tf_prefix" value="crazyflie2" />
<rosparam>
genericLogTopics: ["log_kfpos"]
genericLogTopicFrequencies: [30]
genericLogTopic_log_kfpos_Variables: ["kalman.stateX", "kalman.stateY", "kalman.stateZ"]
</rosparam>
</node>
<node name="joy" pkg="joy" type="joy_node" output="screen">
<param name="dev" value="$(arg joy_dev2)" />
</node>
<node name="joystick_controller" pkg="crazyflie_demo" type="controller.py" output="screen">
<param name="use_crazyflie_controller" value="True" />
</node>
<node name="controller_bridge" pkg="bitcraze_lps_estimator" type="crazyflie_controller_bridge.py" output="screen"/>
<node name="pose" pkg="crazyflie_demo" type="publish_pose_teleop.py" output="screen">
<param name="name" value="goal" />
<param name="rate" value="30" />
<param name="x" value="$(arg x2)" />
<param name="y" value="$(arg y2)" />
<param name="z" value="$(arg z2)" />
</node>
<node name="lps_efk_bridge" pkg="bitcraze_lps_estimator" type="lps_ekf_bridge.py" output="screen">
<param name="tf_prefix" value="crazyflie2" />
</node>
<node name="lps_viz" pkg="bitcraze_lps_estimator" type="lps_viz.py" />
</group>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster"
args="1 0 0 0 0 0 1 world lps 100" />
<include file="$(find crazyflie_driver)/launch/crazyflie_server.launch" />
</launch>
(there was a typo found by bombarie in this example file on github, there was crazyflie1 inside of crazyflie0 group, or still is there for that matter)
Anchors set in room like i said in last post, and anchor_pos.yaml edited to match with measurements in the real world.
So... to come back to our observations: when turning on 2 CF everything seems to be stable (enough), no matter which 2... but when a third one is turned on this one can not find its position.. in Rviz you can see it going all over the place between -10 and 10 in all directions.. sometimes it looks like its going to settle for a bit but is easily disturbed by anything.
Even when turning of another CF the positioning will not settle down accordingly.
Maybe we are missing a vital setting that was not pointed out clearly. We could not seem to figure it out yesterday night, so this evening we will give it another shot. Hope you can give insight that would help us make further progress.
Hope i was explicit enough in our configuration, if need more info to help us, please ask
-----
Another question i want to ask (to rule out heavy radio interference) and have clear for us:
CrazyradioPA operate between 2400MHz and 2525MHz (in 126 channels of 1MHz)
Or was this for the first crazyradio and the new one in the 2.4GHz range? As it's specifications on the website do specify 2.4GHz... which is in the range of WiFi... if so, how are the 126 channels subdivided then? Do the transfer rate of 250K/1M/2M influence the broadcast frequency send on too?
And the anchors are operating in 500MHz channels between the 3.2GHz and 7GHz range..
these channels are to be set somewhere in lps-node-firmware? and in crazyflie-firmware for the lps-decks?
(in our test-room there is no 5GHz WiFi, as far as i can see.. but in our final presentation space at Deutsche Telekom there is a strong 5GHz WiFi)
Cheers!