中级教程课件uorb订阅发布实例_第1页
中级教程课件uorb订阅发布实例_第2页
中级教程课件uorb订阅发布实例_第3页
中级教程课件uorb订阅发布实例_第4页
中级教程课件uorb订阅发布实例_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UORB,另一个进程订阅前一个进程发布的,还有就是订阅到的通过mavlink消息发送到地面站。走了一个完整的飞控数据链路(UORB链路和MAVLINK链路)。roll,pitch,yaw,横滚速度,俯仰速度等msg文件夹下面添加添加一个具体的消息,比如的消息是Msg文件里面的成员如下 相当于把消字添加到这个Cmakelist里面,在编译源码的是就把这个消息相应的.h头文件自动写好了,不要自己写。到这里makepx4fun-v2_default一把。然后在源码的~/src/Firmware/build_px4fmu-v2_default/src/modules/uORB/topics这个文件夹下面可以看到自定义消息的头文件。 lude lude<unistd.h> lude<stdlib.h>#lude<string.h>#lude<stdbool.h>#lude<errno.h>#lude<drivers/drv_hrt.h>#lude<systemlib/err.h>#lude<fcntl.h> staticboolthread_should_exit=false;staticboolthread_running=staticintEXPORTintlaser_gun_main(intargc,char*argv[]);intlaser_gun_thread_main(intargc,char*argv[]);staticintuart_init(constchar*uart_name); staticintset_uart_baudrate(constintfd,unsignedintbaud);//staticstaticvoidusage(constchar*reason); staticint{intspeed;casespeed=casespeed=casespeed=casespeed=case115200:speed=B115200;break;return-EINVAL;}structtermiosuart_config;inttermios_state;uart_config.c_oflag&=~ONLCR;if((termios_state=cfsetispeed(&uart_config,speed))<{warnx("ERR:%d(cfsetispeed)\n",termios_state);returnfalse;}{warnx("ERR:%d(cfsetospeed)\n",termios_state);returnfalse;}{warnx("ERR:%d(tcsetattr)\n",termios_state);returnfalse;}}intuart_init(constchar*{intserial_fd=open(uart_name,O_RDWR|if(serial_fd<0)err(1,"failedtoopenport:%s",uart_name);returnfalse;}}staticvoidusage(constchar{if(reason)}}intlaser_gun_main(intargc,char{if(argc<2)}{if(thread_running){}thread_should_exit=false;//初始化这个进程(argv)?(char*const*)&argv[2]:(char*const}if(!strcmp(argv[1],{thread_should_exit=true;}{if(thread_running){}else}}}{if(argc<2)errx(1,"[YCM]needaserialportnameasargument");}constchar*uart_name=argv[1];chardata='0';if(false==uart_read)return-1;if(false==}shoot_total=0;structlaser_gun_slasergundate;//定义消息结构体memset(&lasergundate,0sizeof(lasergundate));//结构体orb_advert_tlaser_gun_puborb_advertise(ORB_ID(laser_gun&lasergundate)公告这个,同一个进程只用公告一次。{lasergundaaser_gun_shoot_total=data;//}} lude lude<unistd.h> lude<stdlib.h> lude<string.h> #lude<errno.h> lude<systemlib/err.h> lude<fcntl.h> lude<uORB/topics/laser_gun.h>staticboolthread_running=false;staticintdaemon_task;staticintEXPORTintlaser_gun_shoot_main(intargc,char*argv[]);intlaser_gun_shoot_thread_main(intargc,char*argv[]);staticintuart_init(constchar*uart_name); staticintset_uart_baudrate(constintfd,unsignedintbaud);//staticstaticvoidusage(constchar*reason); {intspeed;casespeed=casespeed=casespeed=casespeed=case115200:speed=B115200;break;return-EINVAL;}inttermios_state;uart_config.c_oflag&=~ONLCR;if((termios_state=cfsetispeed(&uart_config,speed))<{warnx("ERR:%d(cfsetispeed)\n",}{warnx("ERR:%d(cfsetospeed)\n",termios_state);returnfalse;}{warnx("ERR:%d(tcsetattr)\n",termios_state);returnfalse;}}intuart_init(constchar*{intserial_fd=open(uart_name,O_RDWR|O_NOCTTY);if(serial_fd<0){err(1,"failedtoopenport:%s",uart_name);returnfalse;}}staticvoidusage(constchar{if(reason)}}{if(argc<2)}{if(thread_running){}(argv)?(char*const*)&argv[2]:(char*const}if(!strcmp(argv[1],{thread_should_exit=true;}{if(thread_running){}else}}}{if(argc<2)errx(1,"[YCM]needaserialportnameasargument");}constchar*uart_name=argv[1];chardata[5];if(false==uart_read)return-1;if(false==}thread_running=true;intstructlaser_gun_slasergundate;{bool{data[0]=lasergunda }}return0;}

要在飞控添加,可执行应用,就是要修改编译,把自己的应用代码编linux下的开发 laser_gun.cCmakeList.txt这个编辑脚本是要自己添加的,它会指导makefilenuttx系统中可以运行的可执行程序了,其中CMakeLists.txt内容如下:就是向编译系统说明了,模块名字,栈大小,源文件名字等。编译makefile就会更据中cmakelist.txt说明来编译这个可执行程序。nuttx_px4fmu-v2_default.cmake这个文件 makepx4fmu-v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论