2020-10-28 12:13:49 -0500 | received badge | ● Nice Question
(source)
|
2018-01-11 20:06:17 -0500 | marked best answer | pointcloud_to_laserscan using kinect Hello, I am using indigo version and I have been trying to convert the depth image to laser scan following this tutorial http://www.hessmer.org/blog/2011/04/1... but I got the following error after executing "roslaunch ./launch/kinect_laser.launch" command [ERROR] [1424961680.546848448]: Failed to load nodelet [/pointcloud_throttle] of type [pointcloud_to_laserscan/CloudThrottle]: According to the loaded plugin descriptions the class pointcloud_to_laserscan/CloudThrottle with base class type nodelet::Nodelet does not exist. Declared types are depth_image_proc/convert_metric depth_image_proc/disparity depth_image_proc/point_cloud_xyz depth_image_proc/point_cloud_xyzi depth_image_proc/point_cloud_xyzrgb depth_image_proc/register image_proc/crop_decimate image_proc/debayer image_proc/rectify image_rotate/image_rotate image_view/disparity image_view/image nodelet_tutorial_math/Plus openni_camera/driver pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet stereo_image_proc/disparity stereo_image_proc/point_cloud2[FATAL] [1424961680.547091841]: Service call failed!
[ERROR] [1424961680.592416238]: Failed to load nodelet [/kinect_laser] of type [pointcloud_to_laserscan/CloudToScan]: According to the loaded plugin descriptions the class pointcloud_to_laserscan/CloudToScan with base class type nodelet::Nodelet does not exist. Declared types are depth_image_proc/convert_metric depth_image_proc/disparity depth_image_proc/point_cloud_xyz depth_image_proc/point_cloud_xyzi depth_image_proc/point_cloud_xyzrgb depth_image_proc/register image_proc/crop_decimate image_proc/debayer image_proc/rectify image_rotate/image_rotate image_view/disparity image_view/image nodelet_tutorial_math/Plus openni_camera/driver pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet stereo_image_proc/disparity stereo_image_proc/point_cloud2[FATAL] [1424961680.592651940]: Service call failed![pointcloud_throttle-23] process has died [pid 7479, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load pointcloud_to_laserscan/CloudThrottle openni_manager cloud_in:=/camera/depth/points cloud_out:=cloud_throttled __name:=pointcloud_throttle __log:=/home/nouf/.ros/log/4528dc14-bdc1-11e4-84e3-b4749fbdedba/pointcloud_throttle-23.log].log file: /home/nouf/.ros/log/4528dc14-bdc1-11e4-84e3-b4749fbdedba/pointcloud_throttle-23*.log[kinect_laser-24] process has died [pid 7505, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load pointcloud_to_laserscan/CloudToScan openni_manager cloud:=cloud_throttled __name:=kinect_laser __log:=/home/nouf/.ros/log/4528dc14-bdc1-11e4-84e3-b4749fbdedba/kinect_laser-24.log].log file: /home/nouf/.ros/log/4528dc14-bdc1-11e4-84e3-b4749fbdedba/kinect_laser-24*.log
I think some files are missing, but I don't know how to fix it |
2017-04-30 02:57:28 -0500 | marked best answer | Gmapping and TF frames Hello, I'm using Ubuntu 14.04 and ROS indigo I published base_link>camera_link frames using static_transform_publisher as follows: <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 0.1 0 0 0 1 base_link camera_link 100" />
Then, when I started slam_gmapping it gives the following error: Laser has to be mounted planar! Z-coordinate has to be 1 or -1, but gave: 0.00000
This is solved when I change X value to 0 in the transformation as follows: <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0.1 0 0 0 1 base_link camera_link 100" />
But this doesn't reflect my robot's situation correctly. Also, I noticed in rviz that camera_depth_optical_frame and camera_rgb_optical_frame frames are upside down (as in the picture) and it is also upside down when I change the X value to 0. Is this normal? |
2017-04-30 02:55:25 -0500 | marked best answer | Z-coordinate has to be 1 or -1 Hello, I'm starting to build a map using gmapping, but whenever I start slam_gmapping, the following warning is shown: Laser has to be mounted planar! Z-coordinate has to be 1 or -1, but gave: 0.00000
This is one of the published transformations: <node pkg="tf" type="static_transform_publisher" name="link2_broadcaster" args="0 0 0.1 0 0 0 1 base_link camera_link 100" />
When I change the X argument into 1 or -1 the warning is gone! I don't know why!.But I'm sure there is something wrong!! and I need the X to be 0. any idea? UPDATE: These are the frames in rviz: and I cannot change the values of the orientation in rviz. |
2016-12-09 09:35:45 -0500 | received badge | ● Famous Question
(source)
|
2016-10-15 07:08:27 -0500 | received badge | ● Famous Question
(source)
|
2016-08-10 06:42:48 -0500 | received badge | ● Famous Question
(source)
|
2016-06-28 21:52:58 -0500 | marked best answer | Adding header files to a node Hello I'm trying to add C++ header files to a ROS node but when I do catkin_make it gives the following error: CMakeFiles/hello.dir/src/hello.cpp.o: In function `chatterCallback(boost::shared_ptr<std_msgs::String_<std::allocator<void> > const> const&)':
hello.cpp:(.text+0x13): undefined reference to `sleepms(int)'
hello.cpp:(.text+0x3b): undefined reference to `RoboteqDevice::SetCommand(int, int, int)'
hello.cpp:(.text+0xa4): undefined reference to `RoboteqDevice::Disconnect()'
CMakeFiles/hello.dir/src/hello.cpp.o: In function `main':
hello.cpp:(.text+0x201): undefined reference to `RoboteqDevice::Connect(std::string)'
CMakeFiles/hello.dir/src/hello.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x598): undefined reference to `RoboteqDevice::RoboteqDevice()'
hello.cpp:(.text+0x5a7): undefined reference to `RoboteqDevice::~RoboteqDevice()'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/nouf/catkin_ws/devel/lib/roboteq_motor/hello] Error 1
make[1]: *** [roboteq_motor/CMakeFiles/hello.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
The header files are under include/PKG_NAME This is the .cpp node: #include <iostream>
#include <stdio.h>
#include <string.h>
#include "roboteq_motor/RoboteqDevice.h"
#include "roboteq_motor/ErrorCodes.h"
#include "roboteq_motor/Constants.h"
#include <unistd.h>
#include <ros/ros.h>
#include <std_msgs/String.h>
using namespace std;
int status;
RoboteqDevice device;
void chatterCallback( const std_msgs::String::ConstPtr& msg){
sleepms(10);
cout<<"- SetCommand(_GO, 1, 1)...";
if((status = device.SetCommand(_GO, 1, 700)) != RQ_SUCCESS)
cout<<"failed --> "<<status<<endl;
else
cout<<"succeeded."<<endl;
device.Disconnect();
}
int main(int argc, char *argv[])
{
ros::init(argc, argv, "hello");
ros::NodeHandle nh;
string response = "";
status = device.Connect("/dev/ttyACM0");
if(status != RQ_SUCCESS)
{
cout<<"Error connecting to device: "<<status<<"."<<endl;
return 1;
}
//Wait 10 ms before sending another command to device
ros::Subscriber sub = nh.subscribe("chatter", 1000, chatterCallback);
ros::spin();
return 0;
This is CMakeLists.txt: cmake_minimum_required(VERSION 2.8.3)
project(roboteq_motor)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
INCLUDE_DIRS include/${PROJECT_NAME}/
LIBRARIES roboteq_motor
CATKIN_DEPENDS roscpp std_msgs
DEPENDS system_lib
)
include_directories(include ${catkin_INCLUDE_DIRS})
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
FILES_MATCHING PATTERN "*.h"
PATTERN ".svn" EXCLUDE
)
add_executable(hello src/hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
SOLUTION:
I changed this line add_executable(hello src/hello.cpp)
to this add_executable(hello src/hello.cpp src/RoboteqDevice.cpp)
THANK YOU ALL |
2016-05-08 16:11:10 -0500 | marked best answer | Java-based desktop application to control ROS Hello, I need to program GUI for controlling ROS as java-based desktop application I know that I may need to use rosjava, but I didn't find any tutorial that demonstrate how to use it. Can someone help? Thank you |
2016-05-08 16:10:32 -0500 | received badge | ● Notable Question
(source)
|
2016-05-08 16:10:32 -0500 | received badge | ● Famous Question
(source)
|
2016-04-14 13:40:00 -0500 | received badge | ● Notable Question
(source)
|
2016-04-14 13:40:00 -0500 | received badge | ● Popular Question
(source)
|
2016-02-20 04:51:09 -0500 | received badge | ● Famous Question
(source)
|
2016-02-11 11:03:07 -0500 | received badge | ● Taxonomist
|
2016-02-11 09:08:16 -0500 | received badge | ● Famous Question
(source)
|
2016-01-21 08:08:43 -0500 | received badge | ● Famous Question
(source)
|
2015-12-21 15:11:05 -0500 | received badge | ● Famous Question
(source)
|
2015-09-10 18:02:38 -0500 | received badge | ● Famous Question
(source)
|
2015-08-20 01:07:18 -0500 | received badge | ● Notable Question
(source)
|
2015-07-30 06:49:24 -0500 | received badge | ● Popular Question
(source)
|
2015-06-26 16:49:19 -0500 | marked best answer | building a map using slam_gmapping Hello, I am using ubuntu 14.04 and indigo version. Also, I used kinect and custom made robot with encoders. I published laser scan, odom, and tf information and now I'm starting building the map but I faced some problems This the launch file for publishing laser scan information: <launch>
<arg name="camera" default="camera"/>
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="camera" default="$(arg camera)"/>
</include>
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
<remap from="cloud_in" to="/camera/depth/points"/>
</node>
</launch>
And I can view the laser scans successfully in rviz. This is the node to publish odom information (the nodes assumes the robot is moving in circle): #include <ros/ros.h>
#include <tf/transform_broadcaster.h>
#include <nav_msgs/Odometry.h>
int main(int argc, char** argv){
ros::init(argc, argv, "odometry_publisher");
ros::NodeHandle n;
ros::Publisher odom_pub = n.advertise<nav_msgs::Odometry>("odom", 50);
tf::TransformBroadcaster odom_broadcaster;
double x = 0.0;
double y = 0.0;
double th = 0.0;
double vx = 0.1;
double vy = -0.1;
double vth = 0.1;
ros::Time current_time, last_time;
current_time = ros::Time::now();
last_time = ros::Time::now();
ros::Rate r(1.0);
while(n.ok()){
ros::spinOnce(); // check for incoming messages
current_time = ros::Time::now();
//compute odometry in a typical way given the velocities of the robot
double dt = (current_time - last_time).toSec();
double delta_x = (vx * cos(th) - vy * sin(th)) * dt;
double delta_y = (vx * sin(th) + vy * cos(th)) * dt;
double delta_th = vth * dt;
x += delta_x;
y += delta_y;
th += delta_th;
//since all odometry is 6DOF we'll need a quaternion created from yaw
geometry_msgs::Quaternion odom_quat = tf::createQuaternionMsgFromYaw(th);
//first, we'll publish the transform over tf
geometry_msgs::TransformStamped odom_trans;
odom_trans.header.stamp = current_time;
odom_trans.header.frame_id = "odom";
odom_trans.child_frame_id = "base_link";
odom_trans.transform.translation.x = x;
odom_trans.transform.translation.y = y;
odom_trans.transform.translation.z = 0.0;
odom_trans.transform.rotation = odom_quat;
//send the transform
odom_broadcaster.sendTransform(odom_trans);
//next, we'll publish the odometry message over ROS
nav_msgs::Odometry odom;
odom.header.stamp = current_time;
odom.header.frame_id = "odom";
//set the position
odom.pose.pose.position.x = x;
odom.pose.pose.position.y = y;
odom.pose.pose.position.z = 0.0;
odom.pose.pose.orientation = odom_quat;
//set the velocity
odom.child_frame_id = "base_link";
odom.twist.twist.linear.x = vx;
odom.twist.twist.linear.y = vy;
odom.twist.twist.angular.z = vth;
//publish the message
odom_pub.publish(odom);
last_time = current_time;
r.sleep();
}
}
I followed the steps in this tutorial When I reached this command : rosbag play --clock mylaserdata.bag the other terminal gives this error: Warning: TF_OLD_DATA ignoring data from the past for frame base_laser at time 1.4273e+09 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
Also, after typing this command: rosrun map_server map_saver it says Waiting for the map and didn't do any thing. UPDATE: I used robot_state_publisher package to publish the TF and this is the TF of the robot:
|
2015-06-26 16:40:43 -0500 | marked best answer | Base_link frame is not connected to odom frame hello, I'm using Ubuntu 14.04 and ROS Indigo I used the following block of code to publish the transformation of base_link frame and odom frame: geometry_msgs::TransformStamped odom_trans;
odom_trans.header.stamp = current_time;
odom_trans.header.frame_id = "odom";
odom_trans.child_frame_id = "base_link";
odom_trans.transform.translation.x = x;
odom_trans.transform.translation.y = y;
odom_trans.transform.translation.z = 0.0;
odom_trans.transform.rotation = odom_quat;
//send the transform
odom_broadcaster.sendTransform(odom_trans);
Also, I used this launch file to publish the other frames: <launch>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 1 0 0 0 1 base_link camera_link 100" />
</launch>
When the robot start moving I run rviz and it shows the odom frame moving, but the base_link and camera_link are fixed in their initial position. I think I missed something but I don't know what is it. UPDATE: 1) current_time is set inside the loop while(nodehandle.ok()) and is set to current_time = ros::Time::now(); 2) odom_broadcaster is created outside the loop and at the beginning of the main as tf::TransformBroadcaster odom_broadcaster; 3) This is running live 4) When I run rosrun tf tf_echo odom base_link it shows values like: At time 1428335473.731
- Translation: [-0.338, 1.148, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.295, 0.955]
in RPY [0.000, -0.000, 0.600]
At time 1428335474.787
- Translation: [-1.613, 3.059, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.223, 0.975]
in RPY [0.000, -0.000, 0.449]
5) This is my tf tree: Also I have this transformation in the launch file: <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 1 0 0 0 1 base_link camera_link 100" /> |
2015-06-26 16:35:06 -0500 | marked best answer | tf static transform publisher in tf static transform publisher, what is the different between
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms and static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
and what are the values that i'm suppose to use in args such as: <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1 100"/> Thank u. |
2015-06-26 04:53:39 -0500 | received badge | ● Notable Question
(source)
|
2015-06-21 02:59:07 -0500 | marked best answer | Adding laser sensors to Gazebo Greetings, I have tried to add laser node to gazebo using the following code: <include filename="$(find erratic_description)/urdf/erratic_hokuyo_laser.xacro"/> <!-- BASE LASER ATTACHMENT -->
<erratic_hokuyo_laser parent="base_link">
<origin xyz="0.18 0 0.11" rpy="0 0 0" />
</erratic_hokuyo_laser>
but I got the following error: Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/indigo/share/xacro/xacro.py /home/nouf/catkin_ws/src/chapter5_tutorials/urdf/robot1_base_03.xacro] returned with code [1]. Param xml is
The traceback for the exception was written to the log file I found out that the erratic_description package doesn't work with indigo version (which I'm currently using).
Is there another package or another way to add a laser node to Gazebo ? Thanks in advance. |
2015-06-21 02:56:03 -0500 | marked best answer | Java swing with ROS Hello, I wan't to ask if there is anyway to connect Java swing with ROS? For example, When I click on a button, a launch command should be fired. I used the following code and it works: try {
Process p = Runtime.getRuntime().exec("ls");
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
But when I tried ROS command it shows the following error: java.io.IOException: Cannot run program "roscore": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at javaapplication2.JFrame.jButton1ActionPerformed(JFrame.java:67)
at javaapplication2.JFrame.access$000(JFrame.java:15)
at javaapplication2.JFrame$1.actionPerformed(JFrame.java:40)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
UPDATE:
bash -c roscore produce no errors but nothing works ... (more) |
2015-06-21 02:25:45 -0500 | marked best answer | Kinect stops when moving motor Hello, I'm using Ubuntu 14.04 and ROS indigo. Also, I'm using pointcloud_to_laserscan package for the kinect and it's working fine. The problem is whenever I send a command to run the motors, the kinect stops and the laptop cannot detect that the kinect is connected. NOTE: The kinect and the motor controller are connected through 2 USB ports. I think the problem is in the laptop, because I tried another laptop and they work fine. Unfortunately, I can't use the good laptop due to RAM problem. Any idea?? |
2015-06-20 07:21:54 -0500 | received badge | ● Famous Question
(source)
|
2015-06-20 07:21:54 -0500 | received badge | ● Famous Question
(source)
|
2015-06-16 00:53:40 -0500 | received badge | ● Famous Question
(source)
|
2015-06-15 17:06:52 -0500 | received badge | ● Famous Question
(source)
|
2015-06-15 17:06:52 -0500 | received badge | ● Notable Question
(source)
|
2015-06-15 01:48:48 -0500 | received badge | ● Famous Question
(source)
|
2015-06-09 17:05:53 -0500 | received badge | ● Famous Question
(source)
|
2015-05-29 09:47:51 -0500 | received badge | ● Famous Question
(source)
|
2015-05-29 09:47:51 -0500 | received badge | ● Notable Question
(source)
|
2015-05-27 11:29:41 -0500 | received badge | ● Famous Question
(source)
|
2015-05-20 07:14:02 -0500 | received badge | ● Notable Question
(source)
|
2015-05-19 20:07:59 -0500 | asked a question | Gazebo and move_base problem Hello I'm using Ubuntu 12.04 and ROS fuerte I' simulating SLAM using gazebo and I followed Learning ROS book. Now I reached move_base.launch but when I run it, it gave the following errors: [ WARN] [1432083250.106400281,
919.561000000]: Waiting on transform from /base_footprint to /map to become available before running costmap, tf error: [ WARN] [1432083251.263770834,
923.948000000]: No laser scan received (and thus no pose updates have been published) for 923.948000 seconds. Verify that data is being published on the /scan topic.
Although, I proved that the laserscans are published by using: rostopic echo scan
This is move_base file: <launch>
<!-- Run the map server -->
<node name="map_server" pkg="map_server" type="map_server" args="$(find simulation)/maps/gazebo_map.yaml" output="screen">
</node>
<include file="$(find amcl)/examples/amcl_diff.launch" >
</include>
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<rosparam file="$(find simulation)/launch/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find simulation)/launch/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find simulation)/launch/local_costmap_params.yaml" command="load" />
<rosparam file="$(find simulation)/launch/global_costmap_params.yaml" command="load" />
<rosparam file="$(find simulation)/launch/base_local_planner_params.yaml" command="load" />
</node>
</launch>
and this is my tf tree: Any idea? Thank you. |
2015-05-15 20:20:22 -0500 | received badge | ● Notable Question
(source)
|
2015-05-15 20:20:22 -0500 | received badge | ● Popular Question
(source)
|
2015-05-05 06:04:35 -0500 | received badge | ● Notable Question
(source)
|
2015-05-03 19:41:28 -0500 | received badge | ● Popular Question
(source)
|