久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
ROS的一個網絡通信接口源程序
[打印本頁]
作者:
zhangson502
時間:
2018-7-4 17:52
標題:
ROS的一個網絡通信接口源程序
ROS的一個網絡通信接口程序
0.png
(41.68 KB, 下載次數: 28)
下載附件
2018-7-4 20:48 上傳
源程序如下:
#include "header/map_exchange.h"
net_ui::net_ui()
{
conn_id=0;
sock_srv = socket(AF_INET,SOCK_STREAM, 0);
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(12307);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sock_srv,(struct sockaddr *)&server_addr,sizeof(server_addr))==-1)
{
perror("Binding:");
exit(1);
}
if(listen(sock_srv,QUEUE) == -1)
{
perror("Listen");
exit(1);
}
//申明所有Publisher
map_pub = n.advertise<nav_msgs::OccupancyGrid>("env_map", 1,true);
//申明所有Subscriber
map_sub = n.subscribe<nav_msgs::OccupancyGrid>("map",1,&net_ui::map_Callback,this);
std_clk = n.subscribe<std_msgs::String>("CORE_clk",1,&net_ui::clk_Callback,this);
server_waitforclient=n.subscribe<std_msgs::Float64>("ui_deadcycle",1,& net_ui::deadcycle_Callback,this);
std_msgs::Float64 id;
ros::Publisher ui_server_pub = n.advertise<std_msgs::Float64>("ui_deadcycle", 1);
ui_server_pub.publish(id);
}
net_ui::~net_ui()
{
close(sock_srv);
}
void net_ui::Connect()
{
if(conn_id>=QUEUE) return;
conn_id++;
printf("正在等待用戶連接\n");
conn[conn_id]= accept(sock_srv, (struct sockaddr*)&client_addr, &length);
printf("第%d名用戶連接!!!\n",conn_id);
}
void net_ui::deadcycle_Callback(const std_msgs::Float64::ConstPtr& msg)
{
ros::Rate r(10);
while(n.ok())
{
Connect();
r.sleep();
}
}
int net_ui::Download()
{
char recvBuf[16];
int re=recv(conn[conn_id-1],recvBuf ,16,0);
if(recvBuf[0]==0x0a&&recvBuf[15]==0x0d)
{
switch(recvBuf[1])
{
case 0x01:
{
char buf[6];
buf[1]=m_map.info.height/256;buf[2]=m_map.info.height%256;
buf[3]=m_map.info.width/256;buf[4]=m_map.info.width%256;
buf[0]=0xff;buf[5]=0xff;
Upload(buf,6);
break;
}
case 0x02:
{
}
}
}
}
void net_ui::Upload(char *a,int len)
{
send(conn[conn_id-1],a,len,0);
}
void net_ui::map_Callback(const nav_msgs::OccupancyGrid::ConstPtr& msg)
{
m_map.info.height=msg->info.height;
m_map.info.width=msg->info.width;
m_map.info.resolution=msg->info.resolution;
m_map.info.origin.position.x=m_map.info.width*m_map.info.resolution;
m_map.info.origin.position.y=m_map.info.height*m_map.info.resolution;
double map_time=(msg->info.map_load_time.toSec());
for(int i=0;i<m_map.info.height ;i++)
{
for(int j=0;j<m_map.info.width;j++)
{
if (map_occupy[i][j]<0) map_occupy[i][j]='X';
else map_occupy[i][j]=(msg->data[i*m_map.info.width +j])/10+'0';
}
}
Map_saver();
}
void net_ui::clk_Callback(const std_msgs::String::ConstPtr& msg)
{
}
int net_ui::Map_saver()
{
printf("收到地圖長:%d,寬:%d \n",m_map.info.height,m_map.info.width);
printf("等待寫入地圖...\n");
FILE *fp;
fp = fopen("/home/exbot/AGV/src/cfg/maps/map.map","wb");
if(fp==NULL) {printf("連接磁盤時出現錯誤!\n");return 1;}
fprintf(fp,"%d %d %f\n",m_map.info.width,m_map.info.height,m_map.info.resolution);
for(int i=0;i<m_map.info.height;i++) fprintf(fp,"%s\n",map_occupy[i]);
fclose(fp);
printf("寫入地圖完成!\n");
return 0;
}
int net_ui::Map_loader()
{
FILE *fp;
printf("等待讀取地圖...\n");
fp = fopen("/home/exbot/AGV/src/cfg/maps/map.map","rb");
if(fp==NULL) {printf("連接磁盤時出現錯誤!\n");return 1;}
fscanf(fp,"%d %d %f\n",&m_map.info.width,&m_map.info.height,&m_map.info.resolution);
printf("磁盤內地圖長:%d,寬:%d 分辨率:%f \n",m_map.info.height,m_map.info.width,m_map.info.resolution);
m_map.info.origin.position.x = 0.0;
m_map.info.origin.position.y = 0.0;
m_map.header.frame_id = "map";
m_map.info.map_load_time = ros::Time::now();
m_map.header.stamp = ros::Time::now();
for(int i=0;i<m_map.info.height;i++)
{
fscanf(fp,"%s",map_occupy[i]);
}
for(int i=0;i<m_map.info.height ;i++)
{
for(int j=0;j<m_map.info.width;j++)
{
if(map_occupy[i][j]=='X') map_occupy[i][j]=-1;
else map_occupy[i][j]=(map_occupy[i][j]-'0')*10;
}
}
//發布地圖消息
m_map.data.resize((long)m_map.info.width*m_map.info.height);
for(long i=0;i<((long)m_map.info.width*m_map.info.height);i++) m_map.data[i]=(int)(map_occupy[i/m_map.info.width][i%m_map.info.width]);
fclose(fp);
map_pub.publish(m_map);
printf("地圖已經發布!\n");
return 0;
}
/************************************** MAIN ************************************/
int main(int argc, char** argv)
{
ros::init(argc, argv, "map_exchanger");
ros::AsyncSpinner spinner(2);
spinner.start();
net_ui map_exchanger;
ros::Rate r(0.3);
map_exchanger.Map_loader();
while(map_exchanger.n.ok())
{
//map_exchanger.Map_loader();
r.sleep();
}
return 0;
}
復制代碼
所有資料51hei提供下載:
ui.zip
(11.3 KB, 下載次數: 14)
2018-7-4 17:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
大豬蹄子
時間:
2020-9-16 20:29
謝謝樓主,可是怎么用呢?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
天天干.com
|
亚洲一区欧美一区
|
久久av网
|
中文字幕专区
|
美女视频.
|
精品毛片
|
国产高清精品一区二区三区
|
日韩电影一区二区三区
|
亚洲情视频
|
日韩二区三区
|
国产在线观看一区二区
|
久久精品亚洲欧美日韩久久
|
亚洲一区二区三区高清
|
精品久久久久久久人人人人传媒
|
美女黄18岁以下禁止观看
|
亚洲av毛片成人精品
|
亚洲精品久久久久久久久久久久久
|
亚洲精品电影在线观看
|
欧美激情综合色综合啪啪五月
|
午夜视频在线免费观看
|
亚洲情视频
|
少妇性l交大片免费一
|
天天影视网天天综合色在线播放
|
欧美一级片在线播放
|
国产精品一二三区在线观看
|
6080亚洲精品一区二区
|
色免费看
|
成人影院av
|
午夜黄色影院
|
中文字幕一区二区三区精彩视频
|
天天影视亚洲综合网
|
久久69精品久久久久久国产越南
|
一区二区三区四区免费在线观看
|
成人性视频免费网站
|
亚洲激情网站
|
日本特黄a级高清免费大片 成年人黄色小视频
|
日韩1区2区
|
a级片在线观看
|
日韩伦理电影免费在线观看
|
成人免费大片黄在线播放
|
亚洲国产成人精品久久
|