一,T265提供位置信息
t265位置信息输出到话题 camera/odom/sample,通过VIO桥接给 mavros/odom/out,同时mavros/local_positon/odom也有数据主要参考了
PX4实战之旅(五):利用T265实现室内定点飞行_realsense驱动-CSDN博客
在planner/plan_manage/launch文件夹中,根据具体执行的是哪个文件,比如仿真执行的是swarm.launch(直接执行github上教程的run_in_sim无法正常显示,虽然swarm文件include了它),把drone_1到drone_9全部删了,相当于swarm_single,即可顺利运行仿真。
虽然github页上推荐使用ego-swarm,但是实测还是ego-planner更能直接上手,ego-swarm多少还要修改一些东西。
实机飞行用single_run_in_exp.launch,把depth_topic的value改成自己的话题名
利用t265的位置信息起飞
首先注意t265的安装,震动的影响很大
二,D415提供深度信息
D415与T265在一个launch文件启动。直接在realsense_ros文件夹里的,t265_and_d400.launch(好像是这个名字),然后修改一下里面的xml文件,即可同时启动。
在single_run_in_exp.launch,把odom_topic的value改成自己的话题名,还要记得修改一下下面的内参
运行single_run_in_exp.launch就完成了建图,并且得到了规划轨迹。
三,给目标点
把目标信息给到ego-planner
在single_run_in_exp.launch,根据flight_type相关提示修改即可
如果需要根据其他任务(如视觉识别到二维码后获取目标点)自动前往新的目标点,使用launch文件被注释了的set_waypoint
ego_replan_fsm.cpp读取param里的waypoint
四,得到规划的轨迹,控制器发布信息给飞控
用自带的px4ctrl,使用ego-planner进行无人机控制时的数据流(自用)-CSDN博客
自定义控制器,ego-planner+PX4自定义控制器V1版本: ego-planner+PX4自定义控制器V1版本(告别PX4Ctrl)
这里先用自带的px4ctrl。
run_ctrl.launch文件内主要注意的是
<remap from="~odom" to="/vins_fusion/imu_propagate" />
<remap from="~cmd" to="/position_cmd" />
/position_cmd用于接收ego_swarm规划的轨迹,目标点在ego_swarm的launch文件给定,这个是px4ctrl接收的话题。如果前面没有改的话,这里也不需要修改。
/vins_fusion/imu_propagate就是无人机自身位姿,改成自己的就行
然后在px4ctrlFSM.cpp里可以看到
if (param.use_bodyrate_ctrl)
{
publish_bodyrate_ctrl(u, now_time);
}
else
{
publish_attitude_ctrl(u, now_time);
解算出来的速度直接发布给了mavros
ctrl_param_fpv.yaml参数修改
yaw角调整命令
节点图
仿真 swarm_single.launch
可以看到主节点是/drone_0_ego_planner_node,
从/drone_0_poscmd_2_odom获取自身位置和目标位置信息,
从/drone_0_pcl_render_node获取环境的点云信息,
把bspline给/drone_0_traj_server进一步解算得到具体的控制信息,返回到/drone_0_poscmd_2_odom改变无人机位置。
/drone_0_odom_visualization用于可视化于rviz,/random_forest用于生成仿真障碍物环境
视觉部分
需要在真实环境中较远距离识别数字
ego-swarm代码学习
EGO_Planner代码学习(二):轨迹服务器ego_planner/traj_server代码流程_egoplanner代码解析-CSDN博客
EGO_Planner代码学习(三):px4ctrl代码流程-CSDN博客
EGO_Planner代码学习(四):轨迹规划器流程——上_egoplanner代码解析-CSDN博客
nx配置 && 常用命令
- 与飞控串口通信:
Jetson Orin NX 开发指南(9): MAVROS 的安装、配置与运行_orin nx 串口-CSDN博客飞控(Pixhawk 4 Mini)与机载电脑(Jetson Xavier NX )实现串口通信_px4与机载电脑-CSDN博客
- 启动ego
------------roslaunch---------
##mavros
sudo chmod 777 /dev/ttyACM0
roslaunch mavros px4.launch
##realsense + mavros + fast_drone
sh shfiles/rspx4.sh
roslaunch px4_realsense_bridge multiple.launch
roslaunch realsense2_camera rs_camera.launch
roslaunch realsense2_camera rs_d415_and_t265.launch
-----------realsense--------
##d415 828612062505
##t265 133122110834
realsense-viewer
rqt_image_view
rs-enumerate-devices | grep Serial
-----------打开有root权限的文件夹---------
sudo nautilus
- pub/sub && client/server
-------------------sub/pub--------------------
pub_node ----> topic_name ----> sub_node
rate.sleep() spin()
pub_node.publish(msg) callback(msg)
------------------client/server---------------
req ----> srv.request.
client_node ----> call(srv) ----> server_node
srv.response.<---- res
根据call的次数响应 calback()
- ros文件
-------------------创建ros空间-----------------
mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace
##在src文件夹内新建功能包
catkin_create_pkg my_pkg_name roscpp std_msgs
##添加功能包后编译
cd catkin_ws
catkin_make
##rosrun
rosrun my_pkg_name cpp_name
--------- package.xml 和 CMakeLists.txt---------
# catkin_ws/src下的CMakeLists.txt不需要修改,编译后自动生成
# package.xml添加功能包依赖的文件 CMakeLists.txt添加编译细节依赖
# 无自定义消息
## package.xml 不需要修改
## CMakeLists.txt
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
# 自定义msg消息类型
## package.xml
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
## CMakeLists.txt
find_package ( …… message_ generation)
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_ package (…… message _runtime)
add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher ${catkin_LIBRARIES})
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)
# srv消息类型类似
- anaconda
conda config --show #查看当前conda配置
conda list #查看当前环境已安装包
pip install name #安装包
conda remove --name envname packagename #删除包
conda env list #查看已安装环境
conda create -n name python==3.8 #创建环境
conda activate name #激活环境
conda remove -n name --all #删除环境
- 基本库安装
-----------------------opencv----------------------------
pip install opencv-python
-----------------------airsim----------------------------
pip install msgpack-rpc-python
pip install airsim
-----------------------ros-------------------------------
wget http://fishros.com/install -O fishros && bash fishros
-----------------------mavros----------------------------
sudo apt-get install ros-noetic-mavros
cd /opt/ros/noetic/lib/mavros
sudo ./install_geographiclib_datasets.sh
--------------ceres& glog& ddyanmic-reconfigure----------
fast-drone-250的GitHub资源,3rd_party.zip
##glog
./autogen.sh && ./configure && make && sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
##ceres
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install
sudo apt-get install ros-noetic-ddynamic-reconfigure
-----------------------ego-planner------------------------
git clone https://github.com/ZJU-FAST-Lab/Fast-Drone-250
cd Fast-Drone-250
catkin_make
source devel/setup.bash
roslaunch ego_planner single_run_in_sim.launch
- 基本软件
##terminator
sudo apt install terminator
##Plotjuggler
sudo apt install ros-noetic-plotjuggler
sudo apt install ros-noetic-plotjuggler-ros
rosrun plotjuggler plotjuggler
##Net-tools
sudo apt install net-tools
ifconfig
##ssh
sudo apt install openssh-server
在笔记本上:ping 192.168.**.**
sudo gedit /etc/hosts
加上一行:192.168.**.** fast-drone
ping fast-drone
ssh fast-drone@fast-drone(ssh 用户名@别名)
##jtop
sudo python setup.py install
sudo jtop
- realsense
检查有没有装cuda
----------------------方式一------------------------
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
----------------------方式二------------------------
git clone https://github.com/jetsonhacks/installRealSenseSDK.git
cd ./installRealSenseSDK
./installLibrealsense.sh
----------------------方式三------------------------
https://github.com/JIANG-CX/Realsense_jetson
1.Download the realsense sdk source (choose v2.50.0 for ros1): https://github.com/IntelRealSense/librealsense/archive/refs/tags/v2.50.0.zip
2.copy the install_jetson.sh to the librealsense-2.50.0
3.change the content of scripts/libuvc_installation.sh
#wget https://github.com/IntelRealSense/librealsense/archive/master.zip
#unzip ./master.zip -d .
#cd ./librealsense-master
cd /home/dji/Downloads/librealsense-2.50.0 # root of 2.50.0
4.install the sdk (only the Building from Source using RSUSB Backend can work for jetpack 5)
unzip librealsense-2.50.0
cd librealsense-2.50.0
sudo bash install_jetson.sh