这里将原先的大疆示例程序封装为ros package,需要注意得是大疆提供的header和so文件是c的,需要在头文件加入extern c
表示编译的包是来自c的,才能编译通过。
cd ~/catkin_ws/src
git clone https://github.com/guanfuchen/dji_cam_transport
cd ~/catkin_ws
# 编译过程中缺少依赖库自行安装,该仓库依赖roscpp、rospy、std_msgs、image_transport、cv_bridge
catkin_make
source $YOUR_HOME/catkin_ws/devel/setup.bash
运行dji_cam需要获得root权限,切换root权限并且执行source $YOUR_HOME/catkin_ws/devel/setup.bash
,运行如下所示:
sudo su
# 生成buffer然后通过image_transport等依赖库转发topic
rosrun dji_cam_transport dji_cam_transport -g
# 本机查看image
rosrun image_view image_view image:=/camera/image
参考如下,在从机上运行image_view
即可:
在非图形界面下无法生成图像,需要输入以下才能生成图像数据。
xinit&
export DISPLAY:=0
使用 Manifold 获取 M100 上的 X3 摄像头数据
使用Manifold 获取M100 上的X3 摄像头数据一硬件连接二使用
但是获取图像数据需要获取root权限,而使用sudo rosrun则提示无法找到rosrun命令,所以切换到root用户中,并且将相应的ros环境source到root用户中,此时发现运行上述命令无法实现图像解码。猜想是由于自动登录非root用户如ubuntu将图形界面占据,那么接下来的思路便是将自动登录改为root,具体详细步骤参考如下链接,包括开启ssh相关的root登录等等。
sudo passwd root
sudo vim /etc/ssh/sshd_config
#注释#PermitRootLogin without-password并增加PermitRootLogin yes
sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
#修改如下所示
#[SeatDefaults]
#autologin-user=root
#user-session=ubuntu
#greeter-show-manual-login=true
sudo vim /root/.profile
#将mesg n替换成tty -s && mesg n