Crazyswarm安装、动捕配置、飞行测试

设备:

1,ubuntu20.04电脑,ROS:Noetic

2,crazyflie2.0

3,crazyradio

参考:

Installation — Crazyswarm 0.3 documentation

Bitcraze · GitHub

Start here | Bitcraze

Getting started with the Crazyflie 2.X | Bitcraze

GitHub - whoenig/crazyflie_ros: ROS Driver for Bitcraze Crazyflie

Welcome to Crazyswarm’s documentation! — Crazyswarm 0.3 documentation

https://crazyswarm.readthedocs.io/en/latest/tutorials/tutorials.htm

注意事项:

  • 无法直接通过连接动捕WiFi的方法来完成无人机控制,建议使用网线连接动捕。

安装前准备

1,cmake升级

cmake版本有问题,将cmake升级至cmake-3.21.0版本

cd ~/Download
wget https://cmake.org/files/v3.13/cmake-3.21.0-Linux-x86_64.tar.gz
tar -xzvf cmake-3.21.0-Linux-x86_64.tar.gz

# 解压出来的包,将其放在 /opt 目录下,其他目录也可以,主要别以后不小心删了
sudo mv cmake-3.21.0-Linux-x86_64 /opt/cmake-3.21.0

# 建立软链接
sudo ln -sf /opt/cmake-3.21.0/bin/*  /usr/bin/

# 查看 cmake 版本
cmake --version

2,配置ssh

由于文件比较大,用https很难成功,建议用ssh的方式下载。

2.1 更新git组件

$ sudo apt install git-lfs

2.2设置邮箱和用户名

git config --global user.name "WangRongsheng"
git config --global user.email "603329354@qq.com"

2.3用ssh生成公钥

ssh-keygen -t rsa -C "603329354@qq.com"

回车之后会出现如下所示的输出,直接按回车即可:

Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): (按回车键)
Enter passphrase (empty for no passphrase): (按回车键)
Enter same passphrase again: (按回车键)

2.4将公钥添加到github中

在.ssh文件夹中找到id_rsa.pub这个文件,用文本编辑器(如记事本)打开,复制里面的所有内容。

进入github

添加ssh key,把刚才复制的内容粘贴上去保存即可

2.5在终端中配置ssh

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

Crazyswarm安装

1,设置python环境变量

export CSW_PYTHON= python3

2,安装依赖

sudo apt install -y ros-noetic-tf ros-noetic-tf-conversions ros-noetic-joy
sudo apt install -y libpcl-dev libusb-1.0-0-dev
sudo apt install -y swig lib${CSW_PYTHON}-dev ${CSW_PYTHON}-pip
${CSW_PYTHON} -m pip install pytest numpy PyYAML scipy

3,安装仿真依赖

 ${CSW_PYTHON} -m pip install vispy
${CSW_PYTHON} -m pip install matplotlib

4,安装Crazyswarm git

git clone https://github.com/USC-ACTLab/crazyswarm.git

5,安装Crazyswarm依赖

cd crazyswarm
./build.sh

6,测试安装

cd ros_ws/src/crazyswarm/scripts
source ../../../devel/setup.bash
$CSW_PYTHON -m pytest

crazyflie代码固件升级

  • 使用 cfclient 连接到 Crazyflie
  • 转到菜单Crazyflie->Bootloader
  • 从下拉菜单中选择最新版本。(从Github 发布页面下载)
  • 单击“程序”并等待 STM 和 NRF 都被刷新。
  • crazyflie 会自动重启几次。
  • 在所有闪烁完成并在底部看到“状态:空闲”之前,请勿触摸或重新启动您的 crazyflie。
  • 检查固件版本,在View菜单下,打开Tabs->Console选项卡并查看连接到 Crazyflie 2.X 时的输出

动捕定位系统配置(OptiTrack)

在动捕电脑中:

标定 Calibration

与其他多相机测量系统类似,光学运动捕捉系统首先要进行标定才能够使用。在标定过程中, 系统通过捕获的图像计算每个相机的位置、 角度、以及畸变。 通过标定, Motive 构建 3D 捕获空间。 具体来说,通过观察多个同步相机的 2D 图像,关联到通过三角测量得到的每个相机已知的标定 Marker 的位置。 注意, 如果标定之后相机有任何变化, 需要重新进行标定。即便外部设置没有改变,随着时间的变化、 温度其他环境的波动,标定精度会下降,建议每天标定一次系统。

标定步骤

1、准备、 优化捕获设置;

或者在motive启动界面中

2、 在相机预览窗口( Camera Preview) 中, 点击Clear visible清除现有的 Mask 区域;

3、 打开标定窗口,使用 Mask Visible 去除场地中不能移除的反光物体;

系统中存在的放光点会影响系统的标定精度,因此在标定前需要对场景进行检查。

一种方法:在Camera Calibration窗口中, 点击mask visible。如果场景中存在反光点,在相机预览窗口( Camera Preview) 中,会看到有红色的mask标志。在对应相机中,选择滤镜模式,通过光学图像判断反光点的位置和种类。

4、 采集标定采样点(Start Wanding);

点击 Start Wanding后,拿着T形校准棒在中间及场地四周上下挥舞。并点击Calculate计算最终标定结果。

5、 计算、 检查标定结果;

Mean 3D Error大于1mm时,需要重新标定镜头。

6、 放入L型标定杆,设置地面。

使用L形校准棒对地面进行校准,主要作用:1、校准水平面 2、确定坐标系。

L形校准棒的顶点对准系统的坐标原点,短轴对准X轴。

在Camera Calibration中,Vertical offset为L形校准棒上的较准球中心到水平面的垂直距离。

7、创建刚体

将所要创建模型的刚体贴好标记点,放置在标定好的场地内,在 Motive 的 3D 视图中框选住代表刚体模型的标记点。 然后点击右键选择 Rigid Body 下的 Create From Selected Markers;或者使用热键: Ctrl +T;或者在 Asset 窗口点击,选择 New Rigid Body。通过以上三种方式都可以对选中 Marker 点完成刚体创建。

刚体跟踪

对于创建的刚体,由其枢轴点( Pivot Point)代表该刚体的位置和姿态。 当创建刚体时,其枢轴点将默认放置在其几何中心, 方向轴将与全局坐标轴对齐。
Rigid Body->Real-Time Info 窗口可以查看选中 Rigid Body 的实时信息, Rigid
Body 的位置信息是枢轴点相对于世界坐标系坐标轴原点的位置,姿态信息是相对于初始创建刚体坐标轴的变化。

Data Streaming

Motive 可以通过多种方式,将跟踪的数据 实 时 传 输 到 其 他 程 序 : Autodesk MotionBuilder、 Visual3D、 Unreal Engine 4、 3ds Max、 Maya (VCS)、 VRPN、 Trackd。Natnet SDK 支持用户创建自定义客户端用来接收数据,数据流选项不需要单独的许可证。常 见 的 运 动 捕 捉 应 用 依 赖 于 实 时 跟 踪 ,OptiTrack 系统旨在提供低延时的数据,Streaming 窗口中配置选定的服务器通过网络广播数据。 可通过 View 选项下 Data Streaming Pane配置。

在下载crazyswarm的电脑中:

配置crazyswarm、crazyflie和动捕系统之间的通信

配置crazyflie

  • 启动控制台
    $ cfclient
  • 确保地址字段设置为0xE7E7E7E7E7,并单击“scan”
  • 包含“选择接口”的下拉框现在应该有另一个包含您的CranchyFlie URI的条目radio://0/100/2M,并单击“connect”
  • 在“Connect”菜单中,选择结果中的“Configure 2.0”项对话框,将 Radio Address 更改为唯一的数字,0xE7E7E7E701用于第一个crazyflie(那么该飞机在motive的刚体命名为cf1),第二个crazyflie为0xE7E7E7F02(那么该飞机在motive的刚体命名为cf2),以及等等。选择“Write”,然后选择“Exit”
  • 在控制台中,选择“Disconnect”
  • 重新启动crazyflie
  • 更新控制台的地址字段为更改的Radio Address (0xE7E7E7E701)并单击“扫描”。
  • 在下拉列表中看到更长的URI装有radio://0/100/2M/E7E7E7E701

此时这台crazyflie的Address为0xE7E7E7E701;用 rosrun crazyflie_tools scan已经扫描不出来了。(用标签纸记录好并粘贴到机身)

配置crazyswarm

hover_swarm.launch文件

在文件ros_ws/src/crazyswarm/launch/hover_swarm.launch中更改动捕型号并添加动捕电脑的ip地址:

motion_capture_type: "optitrack_closed_source"
motion_capture_host_name: "192.168.2.100" # hostname or IP address
motion_capture_interface_ip:"optitrackPC"# IP address
object_tracking_type: "motionCapture"

crazyflie.yalm

# ros_ws/src/crazyswarm/launch/crazyflies.yaml
crazyflies:
  - id: 1 # id 与动捕刚体的名字对应,id :1 == 动捕名字:cf1,id:n == 动捕名字:cfn
    channel: 100 #这里的channel要和crazyflie的IP地址对应
    initialPosition: [1.5, 1.5, 0.0] #飞机的初始位置
    type: default #与飞机的种类有关,我们购买的属于default
  - id: 2
    channel: 110
    initialPosition: [1.5, 1.0, 0.0]
    type: default

测试

1. 在动捕系统中创建名为cf1的飞机刚体

2. 连接一架crazyflie

在yaml文件中配置要连接的无人机id

# ros_ws/src/crazyswarm/launch/crazyflies.yaml
crazyflies:
  - id: 1 # id 与动捕刚体的名字对应,id :1 == 动捕名字:cf1,id:n == 动捕名字:cfn
    channel: 100 #这里的channel要和crazyflie的IP地址对应
    initialPosition: [1.5, 1.5, 0.0] #飞机的初始位置
    type: default #与飞机的种类有关,我们购买的属于default

3. 运行crazyswarm

在第三方电脑中连接crazyradio后运行

roslaunch crazyswarm hover_swarm.launch
cd ros_ws/src/crazyswarm/scripts
python3 hello_world.py

无人机悬停一段时间后降落

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值