robot upstart 问题
2024-10-12 09:34:48
1.启动后在记录文件发现左轮节点未启动:
因为左边的类未实例化,不会去订阅消息然后初始化
2.两个节点均可以启动后,发现启动后又死掉
因为在程序里有getenv(“HOME”)然后付给string,getenv返回为NULL时程序会报错死掉
3.robot upstart 的用户权限比较低,没有权限操作串口(使用chmod 777 /dev/ttyS*,重启后失效)
通过udev修改权限,具体如下:
在/etc/udev/rules.d/文件夹下添加文件50-chmod-tty.rules,内容如下:
KERNEL=="ttyS[0-9]*", SUBSYSTEM=="tty", GROUP="dialout", MODE="0666"
4.最后发现具备了操作串口的权限,但打开串口失败,修改如下:
int left_wheel_motor::UART0_Open(char *port)
{ int fdd;
fdd = open( port, O_RDWR|O_NOCTTY|O_NDELAY);
if (FALSE == fdd)
{
perror("Can't Open Serial Port");
return(FALSE);
} if(fcntl(fdd, F_SETFL, ) < ) //if and else: set as block
{
printf("fcntl failed!\n");
return(FALSE);
}
else
{
printf("fcntl=%d\n",fcntl(fdd, F_SETFL,));
} if( == isatty(STDIN_FILENO))
{
printf("standard input is not a terminal device\n");
return(FALSE);
}
else
{
printf("isatty success!\n");
}
printf("fd->open=%d\n",fdd);
return fdd;
} 改为: int left_wheel_motor::UART0_Open(char *port)
{ int fdd;
fdd = open( port, O_RDWR|O_NOCTTY);
if (FALSE == fdd)
{
perror("Can't Open Serial Port");
return(FALSE);
}
printf("fd->open=%d\n",fdd);
return fdd;
}
1. apt-get install ros_indigo_robot_upstart
2. rosrun robot_upstart install bzrobot_bringup/launch/bzrobot_base.launch
3. rosrun robot_upstart uninstall bzrobot
4. sudo service bzrobot start
5. sudo service bzrobot stop
6. sudo nano /var/log/upstart/bzrobot.log
7. sudo rm -f /var/log/upstart/bzrobot.log
最新文章
- 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC
- Excel 自动更正
- rabbitmq 3.6 延时消息
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
- 用ISO C++实现自己的信号槽(Qt另类学习)
- 如何注册Uber司机,加入uber(全国版最新最详细注册流程)
- JavaWeb解释一下什么是 servlet?
- SQL开发中容易忽视的一些小地方(四)
- web app 基础界面框架搭建
- ORACLE使用CASE WHEN的方法
- Kubernetes 笔记 03 扫清概念
- BZOJ2783: [JLOI2012]树(树上前缀和+set)
- spring-boot 集成 log4j 记录日志
- Harbor镜像迁移
- python变量交换及注释种类,注释注意事项/注释排查方法
- Winsock网络编程
- DoTween用法教程
- dorado-SplitSpanel控件
- AngularJS中Directive指令系列 - bindToController属性的使用
- Android Paging库使用详解
热门文章
- 掌握这些Python代码技巧,编程至少快一半!
- python getopt模块使用方法
- 在linux下安装并运行scrapyd
- LeetCode(155) Min Stack
- UVa 11695 树的直径 Flight Planning
- [错误处理]UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe5 in position 0: ordinal not in range(128)
- [笔记]BFS算法的python实现
- POJ 1952
- Bootstrap-datepicker 用法
- PHP经典面试题目汇总(上篇)