《Learning High-Speed Flight in the Wild》代码agile_autonomy复现

基本上把所有遇到的报错情况都列出来了~祝安装顺利

前言

论文:https://arxiv.org/abs/2110.05113

代码:https://github.com/uzh-rpg/agile_autonomy

os:Ubuntu20.04 

cuda:11.0

cudnn:v8.1.1


一、部署

1、requirement

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100 

2、create a new catkin workspace and a virtual environment with all the required dependencies.

使用以下命令创建新的 catkin 工作区和具有所有必需依赖项的虚拟环境。

export ROS_VERSION=noetic
mkdir agile_autonomy_ws
cd agile_autonomy_ws
export CATKIN_WS=./catkin_aa
mkdir -p $CATKIN_WS/src
cd $CATKIN_WS
catkin init
catkin config --extend /opt/ros/$ROS_VERSION
catkin config --merge-devel
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-fdiagnostics-color
cd src
git clone git@github.com:uzh-rpg/agile_autonomy.git
vcs-import < agile_autonomy/dependencies.yaml

  报错:Permission denied (publickey).

  解决:https://blog.csdn.net/qq_43768946/article/details/90411154

下面安装的包安装在了默认环境,官方教程后续安装的anaconda环境里也需要这些包,但是我嫌麻烦,没有在anaconda环境里装,后面要用conda环境的时候我直接用了默认环境。

cd rpg_mpl_ros
git submodule update --init --recursive

#install extra dependencies (might need more depending on your OS)
sudo apt-get install libqglviewer-dev-qt5

# Install external libraries for rpg_flightmare
sudo apt install -y libzmqpp-dev libeigen3-dev libglfw3-dev libglm-dev

# Install dependencies for rpg_flightmare renderer
sudo apt install -y libvulkan1 vulkan-utils gdb

# Add environment variables (!!更换好自己的路径)
echo 'export RPGQ_PARAM_DIR=/home/<path/to/>catkin_aa/src/rpg_flightmare' >> ~/.bashrc

3、编译

# 指定python环境
sudo catkin build -DPYTHON_EXECUTABLE=/usr/bin/python3

  报错:找不到Open3D

  解决:重新编译Open3D,并且修改路径。我跟着下面两篇教程,这两个教程我单独弄都不行,两片结合起来就通了。

Learning High-Speed Flight in the Wild (Ubuntu20.04)代码复现-CSDN博客

Learning High-Speed Flight in the Wild 环境安装_sudo apt install gcc-7.5.0-CSDN博客

总结为以下:

安装make以及cmake

sudo apt install cmake
sudo pip install --upgrade cmake==3.21.0
// make 如果先安装的显卡部分,会提示需要安装make
sudo apt install make

 安装open3d

// 若没有git,则需要安装
git clone --recursive https://github.com/intel-isl/Open3D
// 在open3d文件夹内,输入下方指令,切换到指定版本
git checkout  v0.9.0
// 在open3d文件夹内,输入如下指令,进行自动下载第三方支持库,这一步不要自己去下载第三方支持库,很容易出错,虽然速度有点慢,并且可能会失败,但多尝试几次,总会成功的。
git submodule update --init --recursive
// 安装相关库
util/scripts/install-deps-ubuntu.sh
// 安装
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/open3d_install ..
# On Ubuntu
make -j$(nproc)
make install

将程序中的搜索open3d路径修改:

  • mpl_test_node/CMakeLists.txt
  • open3d_conversions/CMakeLists.txt
  • agile_autonomy/data_generation/traj_sampler/CMakeLists.txt

在3个CMakeLists里,修改open3d的搜索路径程序:

find_package(Open3D HINTS /home/yourname/open3d_install/lib/cmake/)

agile_automomy_ws/devel/share/open3d_conversions/cmake/open3d_conversionsConfig.cmake 的第157行增加如下路径:

foreach(path  *;/home/yourname/open3d_install/lib)
  • catkin_aa/src/rpg_mpl_ros/open3d_conversions/CMakeLists.txt替换13行为find_package(Open3D HINTS
  • /usr/local/bin/cmake/)catkin_aa/src/rpg_mpl_ros/planning_ros_utils/src/planning_rviz_plugins/map_display.cpp注释line 39
  • catkin_aa/src/agile_autonomy/data_generation/traj_sampler/CMakeLists.txt  替换12行 为 find_package(Open3D HINTS /usr/local/bin/cmake/)
  • /home/llj/agile_autonomy_ws/catkin_aa/src/agile_autonomy/data_generation/agile_autonomy/CMakeLists.txt  第20行增加 -gencode=arch=compute_86,code=sm_86
  • 在.bashrc增加 export TORCH_CUDA_ARCH_LIST="8.0"
  • <你自己的路径>/agile_autonomy_ws/catkin_aa/devel/share/open3d_conversions/cmake/open3d_conversionsConfig.cmake
    add line 157 with foreach(path **;/usr/local/bin/cmake/lib)

// 修改完后
sudo catkin build -DPYTHON_EXECUTABLE=/usr/bin/python3
. catkin_aa/devel/setup.bash

 编译成功界面:

4、conda环境

上文提到我没有用conda环境,我直接装在了默认环境,下面是安装conda环境的官方教程,需要自己把缺少的包装在conda环境里。

source catkin_aa/devel/setup.bash

roscd planner_learning
conda create --name tf_24 python=3.7
conda activate tf_24
pip install tensorflow-gpu==2.4
pip install rospkg==1.2.3 pyquaternion open3d opencv-python

5、试飞

cd agile_autonomy_ws

source catkin_aa/devel/setup.bash

roslaunch agile_autonomy simulation.launch

  报错1:no module rospkg

  解决sudo pip install --target=/opt/ros/noetic/lib/python3/dist-packages rospkg

  报错2:ERROR: cannot launch node of type [joy/joy_node]: joy

  解决:sudo apt-get install ros-noetic-joy

另一个终端

cd agile_autonomy_ws

source catkin_aa/devel/setup.bash

roscd planner_learning

conda activate tf_24

python test_trajectories.py --settings_file=config/test_settings.yaml


总结

祝大家打败报错!

### 回答1: Agile Modbus是一种现代的通信协议,用于实现工业自动化和数据采集系统中设备之间的通信。 Modbus是一种常见的开放式通信协议,用于连接不同设备和控制系统,尤其是在工业环境中。Agile Modbus是在传统Modbus基础上进行了改进和优化,以提高通信性能和灵活性。 Agile Modbus具有以下特点: 1. 高性能:Agile Modbus通过减少通信延迟和提高数据传输速度,提供更高的通信性能。这使得设备能够实时地发送和接收大量的数据,提高了系统的响应速度和效率。 2. 灵活性:Agile Modbus支持多种通信方式,包括串口、以太网和无线通信。这使得设备能够灵活地选择最适合自己的通信方式,以适应不同的工业环境和应用需求。 3. 安全性:Agile Modbus提供了强大的安全机制,包括数据加密和身份验证。这确保了通信过程中的数据安全性,并防止未经授权的访问和攻击。 4. 易于集成:Agile Modbus采用了标准的通信协议和接口,使得设备能够很容易地与其他Modbus兼容的设备和控制系统进行集成。这降低了系统集成的复杂性和成本。 总而言之,Agile Modbus是一种高性能、灵活和安全的通信协议,适用于工业自动化和数据采集系统。它能够提高设备之间的通信效率,实现实时数据传输和远程控制,为工业生产提供更好的支持和保障。 ### 回答2: agile_modbus,简称AM,是一种基于Modbus协议的敏捷开发方法论。敏捷开发是一种迭代、增量的软件开发方式,旨在提高项目的灵活性和反应速度。而Modbus是一种常用的工业通讯协议,用于实现设备之间的数据交换。 agile_modbus结合了敏捷开发和Modbus协议,旨在为工控系统的开发提供更高效、更灵活的解决方案。在传统的工控系统开发中,开发周期长、需求变更困难,无法满足快速迭代的需求。而采用agile_modbus方法论,开发团队可以将项目拆分成多个小而可实现的任务,每个任务即为一个迭代周期。这种方式可以提高反馈速度,及时响应需求变更。 在实践中,agile_modbus通常采用用户故事的方式来描述需求。用户故事是简洁的描述,从用户的角度说明需求,包括角色、功能和期望结果。开发团队将用户故事转化为任务,并为每个任务设置优先级。团队成员在每个迭代周期内,根据优先级选择任务并实现,每个迭代周期结束后进行验收和反馈。通过不断迭代,agile_modbus可以实现快速交付,并适应需求变化。 总结来说,agile_modbus是一种基于Modbus协议的敏捷开发方法论,可以提高工控系统的开发效率和灵活性。通过将项目拆分为多个小任务,结合用户故事和优先级,实现迭代开发和快速交付。这种方法能够有效应对需求变更,提高反应速度,使开发团队更加高效地完成工控系统的开发任务。 ### 回答3: Agile_Modbus是一种基于敏捷开发方法的Modbus通信协议。Modbus是一种在工业领域广泛应用的通信协议,用于连接不同设备之间进行数据交换。Agile_Modbus通过引入敏捷开发方法,提供了更灵活和高效的Modbus通信解决方案。 敏捷开发是一种迭代、增量的开发方法,强调团队合作和快速响应需求变化。它的核心原则是通过不断的迭代开发和持续集成,将产品交付给客户,并根据客户反馈不断改进和优化。Agile_Modbus在Modbus通信协议上采用类似的方法,使得开发人员能够更加灵活地应对客户需求和不断变化的环境。 Agile_Modbus的主要特点包括以下几点。首先,它采用迭代开发方式,每个迭代都会交付一个可用的部分产品,而不是等待整个产品开发完毕。这样可以更早地验证产品功能和性能,及时修正和调整。其次,Agile_Modbus注重团队合作和交流,通过持续集成和快速反馈机制,使得开发人员和用户能够更好地沟通和理解彼此需求。第三,Agile_Modbus强调用户参与和反馈。用户可以在迭代过程中不断验证产品,并及时提出改进意见和需求变更。最后,Agile_Modbus鼓励自组织和自管理的团队,提倡灵活性和适应性,使得开发过程更加高效和可靠。 总的来说,Agile_Modbus通过引入敏捷开发方法,为Modbus通信协议带来了更高的灵活性和效率。它适用于不断变化的工业环境,能够快速响应和适应不同的客户需求。通过提供持续集成和快速反馈机制,Agile_Modbus能够在开发过程中及时修正和优化产品,提高软件质量和用户满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值